Documentation ¶
Index ¶
- Variables
- func GetJWTToken(c *fiber.Ctx) string
- func NewDB(conf *config.AtomicAllConfig, logger *log.Logger) (db *gorm.DB)
- func ParseJWTToken(token string, user any) error
- type AccountRepository
- type AchievementRepository
- type CourseGroupRepository
- type CourseRepository
- type DivisionRepository
- type Repository
- type ReviewRepository
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrJWTTokenRequired = schema.Unauthorized("jwt token required") ErrInvalidJWTToken = schema.Unauthorized("invalid jwt token") )
Functions ¶
func GetJWTToken ¶
func GetJWTToken(c *fiber.Ctx) string
GetJWTToken extracts token from header or cookie return empty string if not found
func ParseJWTToken ¶
ParseJWTToken extracts and parse token, whatever start with "Bearer " or not
Types ¶
type AccountRepository ¶
type AccountRepository interface { Repository // FindUserByID find a user by id FindUserByID(ctx context.Context, id int) (user *model.User, err error) // GetUserByEmail get a user by email GetUserByEmail(ctx context.Context, email string) (user *model.User, err error) // CheckIfUserExists check whether user exists CheckIfUserExists(ctx context.Context, email string) (bool, error) // CheckIfUserDeleted check whether user is deleted CheckIfUserDeleted(ctx context.Context, email string) (bool, error) // CreateUser create a user CreateUser(ctx context.Context, email, password string) (user *model.User, err error) // AddDeletedIdentifier add deleted identifier to database AddDeletedIdentifier(ctx context.Context, userID int, identifier string) error // MakeIdentifier make user identifier from email MakeIdentifier(ctx context.Context, email string) string // MakePassword make password from rawPassword // using pbkdf2_sha256 algorithm MakePassword(ctx context.Context, rawPassword string) (string, error) // CheckPassword check whether rawPassword matches encryptedPassword CheckPassword(ctx context.Context, rawPassword, encryptedPassword string) error // CreateJWTToken create jwt token for user CreateJWTToken(ctx context.Context, user *model.User) (access, refresh string, err error) // CheckVerificationCode check whether verificationCode matches email CheckVerificationCode(ctx context.Context, scope, email, verificationCode string) error // SetVerificationCode set verificationCode to cache SetVerificationCode(ctx context.Context, email, scope string) (string, error) // DeleteVerificationCode delete verificationCode from cache DeleteVerificationCode(ctx context.Context, email, scope string) error // GetCurrentUser get current user GetCurrentUser(ctx context.Context) (user *model.User, err error) }
func NewAccountRepository ¶
func NewAccountRepository(repository Repository) AccountRepository
type AchievementRepository ¶
type AchievementRepository interface { Repository FindAchievementsByUserID(ctx context.Context, userID int) (achievements []*model.Achievement, err error) }
func NewAchievementRepository ¶
func NewAchievementRepository(repository Repository) AchievementRepository
type CourseGroupRepository ¶
type CourseGroupRepository interface { Repository FindGroups(ctx context.Context, condition func(db *gorm.DB) *gorm.DB) (groups []*model.CourseGroup, err error) FindGroupByID(ctx context.Context, id int, condition func(db *gorm.DB) *gorm.DB) (group *model.CourseGroup, err error) FindGroupByCode(ctx context.Context, code string, condition func(db *gorm.DB) *gorm.DB) (group *model.CourseGroup, err error) CreateGroup(ctx context.Context, group *model.CourseGroup) (err error) FindGroupsWithCourses(ctx context.Context, refresh bool) (groups []*model.CourseGroup, hash string, err error) }
func NewCourseGroupRepository ¶
func NewCourseGroupRepository(repository Repository) CourseGroupRepository
type CourseRepository ¶
type CourseRepository interface { Repository FindCourseByID( ctx context.Context, id int, conditions ...func(db *gorm.DB) *gorm.DB, ) (course *model.Course, err error) FindCoursesByGroupID( ctx context.Context, groupID int, ) (courses []*model.Course, err error) CreateCourse( ctx context.Context, course *model.CourseGroup, courseGroup *model.Course, ) (err error) }
func NewCourseRepository ¶
func NewCourseRepository(repository Repository) CourseRepository
type DivisionRepository ¶
type DivisionRepository interface { // ListDivisions 获取所有分区 ListDivisions(ctx context.Context) (response []*model.Division, err error) // GetDivisionByID 获取分区 GetDivisionByID(ctx context.Context, id int) (response *model.Division, err error) // CreateDivision 创建分区 CreateDivision(ctx context.Context, request *model.Division) (response *model.Division, err error) // ModifyDivision 修改分区 ModifyDivision(ctx context.Context, id int, request *model.Division) (response *model.Division, err error) // DeleteDivision 删除分区 DeleteDivision(ctx context.Context, id int) (err error) }
func NewDivisionRepository ¶
func NewDivisionRepository(repository Repository) DivisionRepository
type Repository ¶
type Repository interface { Transaction(ctx context.Context, fn func(context.Context) error) error GetDB(ctx context.Context) *gorm.DB GetCache(ctx context.Context) *cache.Cache GetConfig(ctx context.Context) *config.AllConfig GetLogger(ctx context.Context) *log.Logger // GetFiberCtx 获取 fiber.Ctx // 必须在 ctx 中设置 "FiberCtx" 为 fiber.Ctx,否则会 panic GetFiberCtx(ctx context.Context) *fiber.Ctx }
func NewRepository ¶
func NewRepository(db *gorm.DB, cache *cache.Cache, logger *log.Logger, conf *config.AtomicAllConfig) Repository
type ReviewRepository ¶
type ReviewRepository interface { Repository FindReviewsByCourseIDs(ctx context.Context, courseIDs []int, condition func(db *gorm.DB) *gorm.DB) (reviews []*model.Review, err error) FindReviews(ctx context.Context, condition func(db *gorm.DB) *gorm.DB) (reviews []*model.Review, err error) GetReviewByID(ctx context.Context, id int) (review *model.Review, err error) GetReview(ctx context.Context, condition func(tx *gorm.DB) *gorm.DB) (review *model.Review, err error) FindReviewVotes(ctx context.Context, reviewIDs []int, userIDs []int) (votes []*model.ReviewVote, err error) CreateReview(ctx context.Context, review *model.Review) (err error) UpdateReview(ctx context.Context, userID int, oldReview *model.Review, newReview *model.Review) (err error) UpdateReviewVote(ctx context.Context, userID int, review *model.Review, data int) (err error) }
func NewReviewRepository ¶
func NewReviewRepository(repository Repository) ReviewRepository
Click to show internal directories.
Click to hide internal directories.