package turso import ( "database/sql" "log" "trankilou.fr/lassistanoque/backend/internal/adapter/database/orm" "trankilou.fr/lassistanoque/backend/internal/domain" ) type TursoAgentRepository struct { db *sql.DB agentTable orm.Table[domain.Agent] } func NewTursoAgentRepository(db *sql.DB) *TursoAgentRepository { dialect := orm.NewSqliteDialect() agentTable, err := orm.NewTable[domain.Agent](db, dialect, "agents") if err != nil { log.Fatalf("error creating lasebuche agent table") } return &TursoAgentRepository{ db: db, agentTable: agentTable, } } func (r *TursoAgentRepository) ListAgents(userID string, teamID string) ([]*domain.Agent, error) { return r.agentTable.Select( orm.WithWhere( "team_id=$1 and team_id in (select team_id from user_teams where user_id=$2)", teamID, userID, ), ) } func (r *TursoAgentRepository) GetAgent(userID string, teamID string, id string) (*domain.Agent, error) { return r.agentTable.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 *TursoAgentRepository) CreateAgent(userID string, agent *domain.Agent) (*domain.Agent, error) { return r.agentTable.Insert(agent) } func (r *TursoAgentRepository) UpdateAgent(userID string, agent *domain.Agent) (*domain.Agent, error) { return r.agentTable.Update(agent) } func (r *TursoAgentRepository) DeleteAgent(userID string, teamID string, id string) error { return r.agentTable.DeleteWhere( "id=$1 and team_id=$2 and team_id in (select team_id from user_teams where user_id=$3)", id, teamID, userID, ) }