50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
|
|
package db
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"encoding/base64"
|
||
|
|
|
||
|
|
"lmika.dev/lmika/weiro/models"
|
||
|
|
"lmika.dev/lmika/weiro/providers/db/gen/sqlgen"
|
||
|
|
)
|
||
|
|
|
||
|
|
func (db *Provider) SelectUserByUsername(ctx context.Context, username string) (models.User, error) {
|
||
|
|
res, err := db.queries.SelectUserByUsername(ctx, username)
|
||
|
|
if err != nil {
|
||
|
|
return models.User{}, err
|
||
|
|
}
|
||
|
|
|
||
|
|
pwdBytes, err := base64.StdEncoding.DecodeString(res.Password)
|
||
|
|
if err != nil {
|
||
|
|
return models.User{}, err
|
||
|
|
}
|
||
|
|
|
||
|
|
return models.User{
|
||
|
|
ID: res.ID,
|
||
|
|
Username: res.Username,
|
||
|
|
PasswordHashed: pwdBytes,
|
||
|
|
}, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func (db *Provider) SaveUser(ctx context.Context, user *models.User) error {
|
||
|
|
hashedPassword := base64.StdEncoding.EncodeToString(user.PasswordHashed)
|
||
|
|
|
||
|
|
if user.ID == 0 {
|
||
|
|
newID, err := db.queries.InsertUser(ctx, sqlgen.InsertUserParams{
|
||
|
|
Username: user.Username,
|
||
|
|
Password: hashedPassword,
|
||
|
|
})
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
user.ID = newID
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
return db.queries.UpdateUser(ctx, sqlgen.UpdateUserParams{
|
||
|
|
ID: user.ID,
|
||
|
|
Username: user.Username,
|
||
|
|
Password: hashedPassword,
|
||
|
|
})
|
||
|
|
}
|