package turso import ( "database/sql" "log" "trankilou.fr/lassistanoque/backend/internal/adapter/database/orm" "trankilou.fr/lassistanoque/backend/internal/domain" ) type TursoProviderRepository struct { db *sql.DB providerTable orm.Table[domain.Provider] } func NewTursoProviderRepository(db *sql.DB) *TursoProviderRepository { dialect := orm.NewSqliteDialect() providerTable, err := orm.NewTable[domain.Provider](db, dialect, "providers") if err != nil { log.Fatalf("error creating lasebuche provider table") } return &TursoProviderRepository{ db: db, providerTable: providerTable, } } func (r *TursoProviderRepository) ListProviders(userID string, teamID string) ([]*domain.Provider, error) { return r.providerTable.Select( orm.WithWhere( "team_id=$1 and team_id in (select team_id from user_teams where user_id=$2)", teamID, userID, ), orm.WithOrder("name"), ) } func (r *TursoProviderRepository) 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 *TursoProviderRepository) CreateProvider(userID string, provider *domain.Provider) (*domain.Provider, error) { return r.providerTable.Insert(provider) } func (r *TursoProviderRepository) UpdateProvider(userID string, provider *domain.Provider) (*domain.Provider, error) { return r.providerTable.Update(provider) } func (r *TursoProviderRepository) 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, ) }