Move to Donetick Org, first commit
This commit is contained in:
commit
c13dd9addb
42 changed files with 7463 additions and 0 deletions
14
external/user/model/model.go
vendored
Normal file
14
external/user/model/model.go
vendored
Normal file
|
@ -0,0 +1,14 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
uModel "donetick.com/core/internal/user/model"
|
||||
)
|
||||
|
||||
type UserExtended struct {
|
||||
uModel.User
|
||||
Credit int `gorm:"column:amount;->"`
|
||||
SubscriptionStatus *string `gorm:"column:status;<-:false"` // read one column
|
||||
ExpiredAt *time.Time `gorm:"column:expired_at;<-:false"` // read one column
|
||||
}
|
49
external/user/repo/repository.go
vendored
Normal file
49
external/user/repo/repository.go
vendored
Normal file
|
@ -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
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue