package services import ( "context" "database/sql" "evening_detective/internal/models" _ "github.com/mattn/go-sqlite3" ) type Repository struct { db *sql.DB } func NewRepository() (*Repository, error) { db, err := sql.Open("sqlite3", "store.db") if err != nil { return nil, err } _, err = db.Exec("CREATE TABLE IF NOT EXISTS teams (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, password TEXT);") if err != nil { return nil, err } return &Repository{db: db}, nil } func (r *Repository) GetTeams(ctx context.Context) ([]*models.Team, error) { rows, err := r.db.Query("select id, name, password from teams") if err != nil { panic(err) } defer rows.Close() teams := []*models.Team{} for rows.Next() { team := &models.Team{} err := rows.Scan(&team.ID, &team.Name, &team.Password) if err != nil { return nil, err } teams = append(teams, team) } return teams, nil } func (r *Repository) AddTeams(ctx context.Context, teams []*models.Team) ([]*models.Team, error) { for _, team := range teams { result, err := r.db.Exec("insert into teams (name, password) values ($1, $2)", team.Name, team.Password) if err != nil { return nil, err } team.ID, err = result.LastInsertId() if err != nil { return nil, err } } return teams, nil }