MCPcopy Index your code
hub / github.com/bytebase/bytebase / ListProjects

Method ListProjects

backend/store/project.go:109–199  ·  view source on GitHub ↗

ListProjects lists all projects.

(ctx context.Context, find *FindProjectMessage)

Source from the content-addressed store, hash-verified

107
108// ListProjects lists all projects.
109func (s *Store) ListProjects(ctx context.Context, find *FindProjectMessage) ([]*ProjectMessage, error) {
110 q := qb.Q().Space("SELECT resource_id, workspace, name, setting, deleted FROM project WHERE workspace = ?", find.Workspace)
111 if filterQ := find.FilterQ; filterQ != nil {
112 q.And("?", filterQ)
113 }
114 if v := find.ResourceID; v != nil {
115 q.And("resource_id = ?", *v)
116 }
117 if len(find.ResourceIDs) > 0 {
118 q.And("resource_id = ANY(?)", find.ResourceIDs)
119 }
120 if !find.ShowDeleted {
121 q.And("deleted = ?", false)
122 }
123
124 if len(find.OrderByKeys) > 0 {
125 orderBy := []string{}
126 for _, v := range find.OrderByKeys {
127 orderBy = append(orderBy, fmt.Sprintf("%s %s", v.Key, v.SortOrder.String()))
128 }
129 q.Space(fmt.Sprintf("ORDER BY %s", strings.Join(orderBy, ", ")))
130 } else {
131 q.Space("ORDER BY project.resource_id")
132 }
133 if v := find.Limit; v != nil {
134 q.Space("LIMIT ?", *v)
135 }
136 if v := find.Offset; v != nil {
137 q.Space("OFFSET ?", *v)
138 }
139
140 query, args, err := q.ToSQL()
141 if err != nil {
142 return nil, err
143 }
144
145 var projectMessages []*ProjectMessage
146 rows, err := s.GetDB().QueryContext(ctx, query, args...)
147 if err != nil {
148 return nil, err
149 }
150 defer rows.Close()
151
152 for rows.Next() {
153 var projectMessage ProjectMessage
154 var payload []byte
155 if err := rows.Scan(
156 &projectMessage.ResourceID,
157 &projectMessage.Workspace,
158 &projectMessage.Title,
159 &payload,
160 &projectMessage.Deleted,
161 ); err != nil {
162 return nil, err
163 }
164 setting := &storepb.Project{}
165 if err := common.ProtojsonUnmarshaler.Unmarshal(payload, setting); err != nil {
166 return nil, err

Callers 1

GetProjectMethod · 0.95

Calls 14

GetDBMethod · 0.95
ListProjectWebhooksMethod · 0.95
storeProjectCacheMethod · 0.95
QFunction · 0.92
SpaceMethod · 0.80
AndMethod · 0.80
JoinMethod · 0.80
ToSQLMethod · 0.80
QueryContextMethod · 0.80
ScanMethod · 0.80
UnmarshalMethod · 0.80
StringMethod · 0.65

Tested by

no test coverage detected