Closed
Description
Input:
SELECT t.id taskID,
t.created_at created_at,
t.updated_at updated_at,
t.amount amount,
u.id creatorID,
u.name creatorName,
c.id clientID,
c.name clientName,
p.id projectId,
p.name projectName,
COALESCE(
NULLIF(p.id, 0), 0
) projectID,
COALESCE(
NULLIF(p.name, null), 'N/A'
) projectName
FROM tasks as t
FULL OUTER JOIN projects as p on t.project_id = p.id AND COALESCE(p.id, 0) = p.id
FULL OUTER JOIN users as u on t.user_id = u.id
FULL OUTER JOIN users as c on t.client_id = c.id
where t.user_id = $1;
output:
SELECT t.id taskID,
t.created_at created_at,
t.updated_at updated_at,
t.amount amount,
u.id creatorID,
u.name creatorName,
c.id clientID,
c.name clientName,
COALESCE(
NULLIF(p.id, 0), 0
) projectID,
COALESCE(
NULLIF(p.name, null), 'N/A'
) projectName
FROM tasks as t
FULL OUTER JOIN projects as p on t.project_id = p.id AND COALESCE(p.id, 0) = p.id
FULL OUTER JOIN users as u on t.user_id = u.id
FULL OUTER JOIN users as c on t.client_id = c.id
type AdminGetTasksRow struct {
Taskid int32 `json:"taskid"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
Amount string `json:"amount"`
Creatorid int32 `json:"creatorid"`
Creatorname string `json:"creatorname"`
Clientid int32 `json:"clientid"`
Clientname string `json:"clientname"`
Coalesce interface{} `json:"coalesce"`
Coalesce_2 interface{} `json:"coalesce_2"`
}
func (q *Queries) AdminGetTasks(ctx context.Context) ([]AdminGetTasksRow, error) {
rows, err := q.query(ctx, q.adminGetTasksStmt, adminGetTasks)
if err != nil {
return nil, err
}
defer rows.Close()
var items []AdminGetTasksRow
for rows.Next() {
var i AdminGetTasksRow
if err := rows.Scan(
&i.Taskid,
&i.CreatedAt,
&i.UpdatedAt,
&i.Amount,
&i.Creatorid,
&i.Creatorname,
&i.Clientid,
&i.Clientname,
&i.Coalesce,
&i.Coalesce_2,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
The alias is not being respected