diff options
author | Mo Tarbin <mhed.t91@gmail.com> | 2024-06-30 21:41:41 -0400 |
---|---|---|
committer | Mo Tarbin <mhed.t91@gmail.com> | 2024-06-30 21:41:41 -0400 |
commit | c13dd9addbf89f716e4ef5cfdf1d673139ffcb68 (patch) | |
tree | bc09646ce1d6d3a402abb4694e19da51b57204f6 /external/user/repo | |
download | donetick-c13dd9addbf89f716e4ef5cfdf1d673139ffcb68.tar.gz donetick-c13dd9addbf89f716e4ef5cfdf1d673139ffcb68.tar.bz2 donetick-c13dd9addbf89f716e4ef5cfdf1d673139ffcb68.zip |
Move to Donetick Org, first commit
Diffstat (limited to 'external/user/repo')
-rw-r--r-- | external/user/repo/repository.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/external/user/repo/repository.go b/external/user/repo/repository.go new file mode 100644 index 0000000..6876984 --- /dev/null +++ b/external/user/repo/repository.go @@ -0,0 +1,49 @@ +package user + +import ( + "context" + + exUser "donetick.com/core/external/user/model" + "donetick.com/core/logging" + "gorm.io/gorm" +) + +type ExtendedUserRepository struct { + db *gorm.DB +} + +func NewExtendedUserRepository(db *gorm.DB) *ExtendedUserRepository { + return &ExtendedUserRepository{db} +} + +func (a *ExtendedUserRepository) FindFullUserByEmail(ctx context.Context, email string) (*exUser.UserExtended, error) { + logger := logging.FromContext(ctx) + logger.Debugw("repository.user.FindFullUserByEmail", "email", email) + var acc exUser.UserExtended + if err := a.db.Table("users"). + Select("users.*, s.expired_at, s.status , s.customer_id"). + Joins("LEFT JOIN stripe_customers sc ON sc.user_id = users.id"). + Joins("LEFT JOIN stripe_subscriptions s ON s.customer_id = sc.customer_id AND s.expired_at > now() OR s.expired_at is null"). + Where("email = ?", email). + First(&acc).Error; err != nil { + logger.Error("repository.user.FindFullUserByEmail failed to find", "err", err) + return nil, err + } + return &acc, nil +} + +func (a *ExtendedUserRepository) FindFullUserByUsername(ctx context.Context, username string) (*exUser.UserExtended, error) { + logger := logging.FromContext(ctx) + logger.Debugw("repository.user.FindFullUserByUsername", "username", username) + var acc exUser.UserExtended + if err := a.db.Table("users"). + Select("users.*, s.expired_at, s.status , s.customer_id"). + Joins("LEFT JOIN stripe_customers sc ON sc.user_id = users.id"). + Joins("LEFT JOIN stripe_subscriptions s ON s.customer_id = sc.customer_id AND s.expired_at > now() OR s.expired_at is null"). + Where("username = ?", username). + First(&acc).Error; err != nil { + logger.Error("repository.user.FindFullUserByUsername failed to find", "err", err) + return nil, err + } + return &acc, nil +} |