repository

package
v0.0.0-...-39efa14 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 13, 2024 License: Apache-2.0 Imports: 40 Imported by: 0

Documentation

Index

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 NewDB

func NewDB(conf *config.AtomicAllConfig, logger *log.Logger) (db *gorm.DB)

func ParseJWTToken

func ParseJWTToken(token string, user any) error

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL