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 } return dbUserToUser(res) } func (db *Provider) SelectUserByID(ctx context.Context, userID int64) (models.User, error) { res, err := db.queries.SelectUserByID(ctx, userID) if err != nil { return models.User{}, err } return dbUserToUser(res) } 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, }) } func dbUserToUser(res sqlgen.User) (models.User, error) { 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 }