@@ -3,6 +3,7 @@ package databasefake
3
3
import (
4
4
"context"
5
5
"database/sql"
6
+ "strings"
6
7
7
8
"github.com/coder/coder/database"
8
9
)
@@ -14,15 +15,25 @@ func New() database.Store {
14
15
organizations : make ([]database.Organization , 0 ),
15
16
organizationMembers : make ([]database.OrganizationMember , 0 ),
16
17
users : make ([]database.User , 0 ),
18
+
19
+ project : make ([]database.Project , 0 ),
20
+ projectHistory : make ([]database.ProjectHistory , 0 ),
21
+ projectParameter : make ([]database.ProjectParameter , 0 ),
17
22
}
18
23
}
19
24
20
25
// fakeQuerier replicates database functionality to enable quick testing.
21
26
type fakeQuerier struct {
27
+ // Legacy tables
22
28
apiKeys []database.APIKey
23
29
organizations []database.Organization
24
30
organizationMembers []database.OrganizationMember
25
31
users []database.User
32
+
33
+ // New tables
34
+ project []database.Project
35
+ projectHistory []database.ProjectHistory
36
+ projectParameter []database.ProjectParameter
26
37
}
27
38
28
39
// InTx doesn't rollback data properly for in-memory yet.
@@ -89,6 +100,48 @@ func (q *fakeQuerier) GetOrganizationsByUserID(_ context.Context, userID string)
89
100
return organizations , nil
90
101
}
91
102
103
+ func (q * fakeQuerier ) GetProjectByOrganizationAndName (_ context.Context , arg database.GetProjectByOrganizationAndNameParams ) (database.Project , error ) {
104
+ for _ , project := range q .project {
105
+ if project .OrganizationID != arg .OrganizationID {
106
+ continue
107
+ }
108
+ if strings .EqualFold (project .Name , arg .Name ) {
109
+ continue
110
+ }
111
+ return project , nil
112
+ }
113
+ return database.Project {}, sql .ErrNoRows
114
+ }
115
+
116
+ func (q * fakeQuerier ) GetProjectsByOrganizationIDs (_ context.Context , ids []string ) ([]database.Project , error ) {
117
+ projects := make ([]database.Project , 0 )
118
+ for _ , project := range q .project {
119
+ for _ , id := range ids {
120
+ if project .OrganizationID == id {
121
+ projects = append (projects , project )
122
+ break
123
+ }
124
+ }
125
+ }
126
+ if len (projects ) == 0 {
127
+ return nil , sql .ErrNoRows
128
+ }
129
+ return projects , nil
130
+ }
131
+
132
+ func (q * fakeQuerier ) GetOrganizationMemberByUserID (_ context.Context , arg database.GetOrganizationMemberByUserIDParams ) (database.OrganizationMember , error ) {
133
+ for _ , organizationMember := range q .organizationMembers {
134
+ if organizationMember .OrganizationID != arg .OrganizationID {
135
+ continue
136
+ }
137
+ if organizationMember .UserID != arg .UserID {
138
+ continue
139
+ }
140
+ return organizationMember , nil
141
+ }
142
+ return database.OrganizationMember {}, sql .ErrNoRows
143
+ }
144
+
92
145
func (q * fakeQuerier ) InsertAPIKey (_ context.Context , arg database.InsertAPIKeyParams ) (database.APIKey , error ) {
93
146
//nolint:gosimple
94
147
key := database.APIKey {
@@ -136,6 +189,58 @@ func (q *fakeQuerier) InsertOrganizationMember(_ context.Context, arg database.I
136
189
return organizationMember , nil
137
190
}
138
191
192
+ func (q * fakeQuerier ) InsertProject (_ context.Context , arg database.InsertProjectParams ) (database.Project , error ) {
193
+ project := database.Project {
194
+ ID : arg .ID ,
195
+ Created : arg .Created ,
196
+ Updated : arg .Updated ,
197
+ OrganizationID : arg .OrganizationID ,
198
+ Name : arg .Name ,
199
+ Provisioner : arg .Provisioner ,
200
+ }
201
+ q .project = append (q .project , project )
202
+ return project , nil
203
+ }
204
+
205
+ func (q * fakeQuerier ) InsertProjectHistory (_ context.Context , arg database.InsertProjectHistoryParams ) (database.ProjectHistory , error ) {
206
+ //nolint:gosimple
207
+ history := database.ProjectHistory {
208
+ ID : arg .ID ,
209
+ ProjectID : arg .ProjectID ,
210
+ Created : arg .Created ,
211
+ Updated : arg .Updated ,
212
+ Name : arg .Name ,
213
+ Description : arg .Description ,
214
+ StorageMethod : arg .StorageMethod ,
215
+ StorageSource : arg .StorageSource ,
216
+ ImportJobID : arg .ImportJobID ,
217
+ }
218
+ q .projectHistory = append (q .projectHistory , history )
219
+ return history , nil
220
+ }
221
+
222
+ func (q * fakeQuerier ) InsertProjectParameter (_ context.Context , arg database.InsertProjectParameterParams ) (database.ProjectParameter , error ) {
223
+ //nolint:gosimple
224
+ param := database.ProjectParameter {
225
+ ID : arg .ID ,
226
+ ProjectHistoryID : arg .ProjectHistoryID ,
227
+ Name : arg .Name ,
228
+ Description : arg .Description ,
229
+ DefaultSource : arg .DefaultSource ,
230
+ AllowOverrideSource : arg .AllowOverrideSource ,
231
+ DefaultDestination : arg .DefaultDestination ,
232
+ AllowOverrideDestination : arg .AllowOverrideDestination ,
233
+ DefaultRefresh : arg .DefaultRefresh ,
234
+ RedisplayValue : arg .RedisplayValue ,
235
+ ValidationError : arg .ValidationError ,
236
+ ValidationCondition : arg .ValidationCondition ,
237
+ ValidationTypeSystem : arg .ValidationTypeSystem ,
238
+ ValidationValueType : arg .ValidationValueType ,
239
+ }
240
+ q .projectParameter = append (q .projectParameter , param )
241
+ return param , nil
242
+ }
243
+
139
244
func (q * fakeQuerier ) InsertUser (_ context.Context , arg database.InsertUserParams ) (database.User , error ) {
140
245
user := database.User {
141
246
ID : arg .ID ,
0 commit comments