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 } func (r *Repository) FetchOneByRoleId(roleId int) (*domain.Account, error) { var account domain.Account err := r.db.Get(&account, SqlFetchOneByRoleId, roleId) if err != nil { if err == sql.ErrNoRows { return nil, nil } else { return nil, err } } return &account, nil }