72 lines
1.6 KiB
Go
72 lines
1.6 KiB
Go
package controller
|
|
|
|
import (
|
|
"arimelody-web/model"
|
|
"math/rand"
|
|
|
|
"github.com/jmoiron/sqlx"
|
|
)
|
|
|
|
func GetAccount(db *sqlx.DB, username string) (*model.Account, error) {
|
|
var account = model.Account{}
|
|
|
|
err := db.Get(&account, "SELECT * FROM account WHERE username=$1", username)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &account, nil
|
|
}
|
|
|
|
func GetAccountByEmail(db *sqlx.DB, email string) (*model.Account, error) {
|
|
var account = model.Account{}
|
|
|
|
err := db.Get(&account, "SELECT * FROM account WHERE email=$1", email)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &account, nil
|
|
}
|
|
|
|
func CreateAccount(db *sqlx.DB, account *model.Account) error {
|
|
_, err := db.Exec(
|
|
"INSERT INTO account (username, password, email, avatar_url) " +
|
|
"VALUES ($1, $2, $3, $4)",
|
|
account.Username,
|
|
account.Password,
|
|
account.Email,
|
|
account.AvatarURL)
|
|
|
|
return err
|
|
}
|
|
|
|
func UpdateAccount(db *sqlx.DB, account *model.Account) error {
|
|
_, err := db.Exec(
|
|
"UPDATE account " +
|
|
"SET username=$2, password=$3, email=$4, avatar_url=$5) " +
|
|
"WHERE id=$1",
|
|
account.ID,
|
|
account.Username,
|
|
account.Password,
|
|
account.Email,
|
|
account.AvatarURL)
|
|
|
|
return err
|
|
}
|
|
|
|
func DeleteAccount(db *sqlx.DB, accountID string) error {
|
|
_, err := db.Exec("DELETE FROM account WHERE id=$1", accountID)
|
|
return err
|
|
}
|
|
|
|
var inviteChars = []byte("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
|
|
|
|
func GenerateInviteCode(length int) []byte {
|
|
code := []byte{}
|
|
for i := 0; i < length; i++ {
|
|
code = append(code, inviteChars[rand.Intn(len(inviteChars) - 1)])
|
|
}
|
|
return code
|
|
}
|