trepa/internal/accounts/repository/account.go
qpismont edc9aeb471
Some checks failed
ci/woodpecker/push/lint Pipeline failed
ci/woodpecker/push/tests Pipeline was successful
ci/woodpecker/push/build unknown status
Remove FetchOneByRoleId method and its corresponding SQL constant from the account repository to streamline account management functionality.
2025-04-17 20:24:20 +00:00

64 lines
1.1 KiB
Go

package repository
import (
"database/sql"
"gitea.qpismont.fr/qpismont/trepa/internal/accounts/domain"
"github.com/jmoiron/sqlx"
)
type Repository struct {
db *sqlx.DB
}
func NewRepository(db *sqlx.DB) domain.AccountRepository {
return &Repository{db: db}
}
func (r *Repository) Insert(account domain.Account) (int, error) {
var id int
stmt, err := r.db.Prepare(SqlInsert)
if err != nil {
return id, err
}
defer stmt.Close()
err = stmt.QueryRow(account.Username, account.Password, account.RoleId).Scan(&id)
if err != nil {
return id, err
}
return id, nil
}
func (r *Repository) FetchOneById(id int) (*domain.Account, error) {
var account domain.Account
err := r.db.Get(&account, SqlFetchOneById, id)
if err != nil {
if err == sql.ErrNoRows {
return nil, nil
} else {
return nil, err
}
}
return &account, nil
}
func (r *Repository) FetchOneByUsername(username string) (*domain.Account, error) {
var account domain.Account
err := r.db.Get(&account, SqlFetchOneByUsername, username)
if err != nil {
if err == sql.ErrNoRows {
return nil, nil
} else {
return nil, err
}
}
return &account, nil
}