diff --git a/db/user.go b/db/user.go new file mode 100644 index 0000000..7bea1f5 --- /dev/null +++ b/db/user.go @@ -0,0 +1,29 @@ +package db + +import ( + "errors" + + "gorm.io/gorm" +) + +type User struct { + gorm.Model + Username string + Password string +} + +var ( + ERROR_USER_USERNAME_NOT_UNIQUE = errors.New("Username already persists in database") +) + +func (u *User) BeforeCreate(ctx *gorm.DB) error { + var duplicate User + err := ctx.Find(&duplicate, User{Username: u.Username}).Error + if err != nil { + return err + } + if duplicate.ID != 0 { + return ERROR_USER_USERNAME_NOT_UNIQUE + } + return nil +}