Changeset 0.29.0 (#195)
This commit is contained in:
@@ -418,6 +418,52 @@ func (s *ProjectStore) GetProjectIDForChannel(ctx context.Context, channelID str
|
||||
return projectID, err
|
||||
}
|
||||
|
||||
// ── CS5c additions (v0.29.0) ──────────────────────────────────────────
|
||||
|
||||
func (s *ProjectStore) AdminList(ctx context.Context, includeArchived bool) ([]store.AdminProject, error) {
|
||||
archivedFilter := "AND p.is_archived = 0"
|
||||
if includeArchived {
|
||||
archivedFilter = ""
|
||||
}
|
||||
|
||||
rows, err := DB.QueryContext(ctx, fmt.Sprintf(`
|
||||
SELECT p.id, p.name, p.description, p.scope,
|
||||
p.owner_id, p.team_id, p.is_archived,
|
||||
p.created_at, p.updated_at,
|
||||
(SELECT COUNT(*) FROM project_channels WHERE project_id = p.id),
|
||||
(SELECT COUNT(*) FROM project_knowledge_bases WHERE project_id = p.id),
|
||||
(SELECT COUNT(*) FROM project_notes WHERE project_id = p.id),
|
||||
COALESCE(u.username, '')
|
||||
FROM projects p
|
||||
LEFT JOIN users u ON u.id = p.owner_id
|
||||
WHERE 1=1 %s
|
||||
ORDER BY p.updated_at DESC`, archivedFilter))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
results := make([]store.AdminProject, 0)
|
||||
for rows.Next() {
|
||||
var p store.AdminProject
|
||||
var teamID sql.NullString
|
||||
var archived int
|
||||
if err := rows.Scan(
|
||||
&p.ID, &p.Name, &p.Description, &p.Scope,
|
||||
&p.OwnerID, &teamID, &archived,
|
||||
st(&p.CreatedAt), st(&p.UpdatedAt),
|
||||
&p.ChannelCount, &p.KBCount, &p.NoteCount,
|
||||
&p.OwnerName,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
p.IsArchived = archived != 0
|
||||
p.TeamID = NullableStringPtr(teamID)
|
||||
results = append(results, p)
|
||||
}
|
||||
return results, rows.Err()
|
||||
}
|
||||
|
||||
// ── Helpers ─────────────────────────────────
|
||||
|
||||
func boolToInt(b bool) int {
|
||||
|
||||
Reference in New Issue
Block a user