62 lines
1.7 KiB
Go
62 lines
1.7 KiB
Go
package turso
|
|
|
|
import (
|
|
"database/sql"
|
|
"log"
|
|
|
|
"gitea.trankilou.fr/fabien/lasebuche"
|
|
"trankilou.fr/lassistanoque/backend/internal/domain"
|
|
)
|
|
|
|
type TursoModelRepository struct {
|
|
db *sql.DB
|
|
providerTable lasebuche.Table[domain.Provider]
|
|
}
|
|
|
|
func NewTursoModelRepository(db *sql.DB) *TursoModelRepository {
|
|
dialect := lasebuche.NewSqliteDialect()
|
|
providerTable, err := lasebuche.NewTable[domain.Provider](db, dialect, "providers")
|
|
if err != nil {
|
|
log.Fatalf("error creating lasebuche team table")
|
|
}
|
|
|
|
return &TursoModelRepository{
|
|
db: db,
|
|
providerTable: providerTable,
|
|
}
|
|
}
|
|
|
|
func (r *TursoModelRepository) ListProviders(userID string, teamID string) ([]*domain.Provider, error) {
|
|
return r.providerTable.SelectWhere(
|
|
"team_id=$1 and team_id in (select team_id from user_teams where user_id=$2)",
|
|
teamID,
|
|
userID,
|
|
)
|
|
}
|
|
|
|
func (r *TursoModelRepository) GetProvider(userID string, teamID string, id string) (*domain.Provider, error) {
|
|
return r.providerTable.SelectOne(
|
|
"id=$1 and team_id=$2 and team_id in (select team_id from user_teams where user_id=$3)",
|
|
id,
|
|
teamID,
|
|
userID,
|
|
)
|
|
}
|
|
|
|
func (r *TursoModelRepository) CreateProvider(userID string, provider *domain.Provider) (*domain.Provider, error) {
|
|
return r.providerTable.Insert(provider)
|
|
}
|
|
|
|
func (r *TursoModelRepository) UpdateProvider(userID string, provider *domain.Provider) (*domain.Provider, error) {
|
|
return r.providerTable.Update(provider)
|
|
}
|
|
|
|
func (r *TursoModelRepository) DeleteProvider(userID string, teamID string, id string) error {
|
|
return r.providerTable.DeleteWhere(
|
|
"id=$1 and team_id=$2 and team_id in (select team_id from user_teams where user_id=$3)",
|
|
id,
|
|
teamID,
|
|
userID,
|
|
)
|
|
}
|