This commit is contained in:
2026-10-04 00:20:29 +07:00
parent 347b648de7
commit 6511a015d3
6 changed files with 55 additions and 47 deletions
+27 -45
View File
@@ -54,9 +54,7 @@ func (r *ScenariosRepo) GetScenariosByAuthorID(
ctx context.Context,
authorID int,
) ([]*repos.Scenario, error) {
rows, err := r.pool.Query(
ctx,
`SELECT
return r.getScenarios(ctx, `SELECT
scenarios.id,
scenarios.name,
scenarios.description,
@@ -72,44 +70,27 @@ func (r *ScenariosRepo) GetScenariosByAuthorID(
LEFT JOIN users on scenarios.author_id = users.id
WHERE scenarios.author_id = $1 and is_deleted = FALSE
ORDER BY created_at DESC`,
authorID,
)
if err != nil {
return nil, err
}
defer rows.Close()
authorID)
}
var scenarios []*repos.Scenario
for rows.Next() {
scenario := &repos.Scenario{}
var authorID *int
var authorUsername *string
err := rows.Scan(
&scenario.ID,
&scenario.Name,
&scenario.Description,
&scenario.Image,
&scenario.Scenario,
&authorID,
&authorUsername,
&scenario.Status,
&scenario.UpdatedAt,
&scenario.CreatedAt,
&scenario.PublishedAt,
)
if err != nil {
return nil, err
}
if authorID != nil && authorUsername != nil {
scenario.Author = &repos.User{ID: *authorID, Username: *authorUsername}
}
scenarios = append(scenarios, scenario)
}
if err := rows.Err(); err != nil {
return nil, err
}
return scenarios, nil
// GetAllScenarios returns all non-deleted scenarios.
func (r *ScenariosRepo) GetAllScenarios(ctx context.Context) ([]*repos.Scenario, error) {
return r.getScenarios(ctx, `SELECT
scenarios.id,
scenarios.name,
scenarios.description,
scenarios.image,
scenarios.scenario,
users.id,
users.username,
scenarios.status,
scenarios.updated_at,
scenarios.created_at,
scenarios.published_at
FROM scenarios
LEFT JOIN users on scenarios.author_id = users.id
WHERE is_deleted = FALSE
ORDER BY created_at DESC`)
}
// GetScenariosByStatus returns scenarios with the requested status.
@@ -117,9 +98,7 @@ func (r *ScenariosRepo) GetScenariosByStatus(
ctx context.Context,
status string,
) ([]*repos.Scenario, error) {
rows, err := r.pool.Query(
ctx,
`SELECT
return r.getScenarios(ctx, `SELECT
scenarios.id,
scenarios.name,
scenarios.description,
@@ -135,8 +114,11 @@ func (r *ScenariosRepo) GetScenariosByStatus(
LEFT JOIN users on scenarios.author_id = users.id
WHERE scenarios.status = $1 and is_deleted = FALSE
ORDER BY created_at DESC`,
status,
)
status)
}
func (r *ScenariosRepo) getScenarios(ctx context.Context, query string, args ...any) ([]*repos.Scenario, error) {
rows, err := r.pool.Query(ctx, query, args...)
if err != nil {
return nil, err
}