Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit243f837

Browse files
committed
feat: Implement basic moon crud
1 parent2612e32 commit243f837

16 files changed

+502
-0
lines changed

‎coderd/database/dbauthz/querier.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1647,6 +1647,34 @@ func (q *querier) GetWorkspaceByWorkspaceAppID(ctx context.Context, workspaceApp
16471647
returnfetch(q.log,q.auth,q.db.GetWorkspaceByWorkspaceAppID)(ctx,workspaceAppID)
16481648
}
16491649

1650+
func (q*querier)GetWorkspaceProxies(ctx context.Context) ([]database.WorkspaceProxy,error) {
1651+
returnfetchWithPostFilter(q.auth,func(ctx context.Context,_any) ([]database.WorkspaceProxy,error) {
1652+
returnq.db.GetWorkspaceProxies(ctx)
1653+
})(ctx,nil)
1654+
}
1655+
1656+
func (q*querier)GetWorkspaceProxyByID(ctx context.Context,id uuid.UUID) (database.WorkspaceProxy,error) {
1657+
returnfetch(q.log,q.auth,q.db.GetWorkspaceProxyByID)(ctx,id)
1658+
}
1659+
1660+
func (q*querier)InsertWorkspaceProxy(ctx context.Context,arg database.InsertWorkspaceProxyParams) (database.WorkspaceProxy,error) {
1661+
returninsert(q.log,q.auth,rbac.ResourceWorkspaceProxy.InOrg(arg.OrganizationID),q.db.InsertWorkspaceProxy)(ctx,arg)
1662+
}
1663+
1664+
func (q*querier)UpdateWorkspaceProxy(ctx context.Context,arg database.UpdateWorkspaceProxyParams) (database.WorkspaceProxy,error) {
1665+
fetch:=func(ctx context.Context,arg database.UpdateWorkspaceProxyParams) (database.WorkspaceProxy,error) {
1666+
returnq.db.GetWorkspaceProxyByID(ctx,arg.ID)
1667+
}
1668+
returnupdateWithReturn(q.log,q.auth,fetch,q.db.UpdateWorkspaceProxy)(ctx,arg)
1669+
}
1670+
1671+
func (q*querier)UpdateWorkspaceProxyDeleted(ctx context.Context,arg database.UpdateWorkspaceProxyDeletedParams)error {
1672+
fetch:=func(ctx context.Context,arg database.UpdateWorkspaceProxyDeletedParams) (database.WorkspaceProxy,error) {
1673+
returnq.db.GetWorkspaceProxyByID(ctx,arg.ID)
1674+
}
1675+
returndeleteQ(q.log,q.auth,fetch,q.db.UpdateWorkspaceProxyDeleted)(ctx,arg)
1676+
}
1677+
16501678
funcauthorizedTemplateVersionFromJob(ctx context.Context,q*querier,job database.ProvisionerJob) (database.TemplateVersion,error) {
16511679
switchjob.Type {
16521680
casedatabase.ProvisionerJobTypeTemplateVersionDryRun:

‎coderd/database/dbauthz/querier_test.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,38 @@ func (s *MethodTestSuite) TestOrganization() {
438438
}))
439439
}
440440

441+
func (s*MethodTestSuite)TestWorkspaceProxy() {
442+
s.Run("InsertWorkspaceProxy",s.Subtest(func(db database.Store,check*expects) {
443+
o:=dbgen.Organization(s.T(),db, database.Organization{})
444+
check.Args(database.InsertWorkspaceProxyParams{
445+
ID:uuid.New(),
446+
OrganizationID:o.ID,
447+
}).Asserts(rbac.ResourceWorkspaceProxy.InOrg(o.ID),rbac.ActionCreate)
448+
}))
449+
s.Run("UpdateWorkspaceProxy",s.Subtest(func(db database.Store,check*expects) {
450+
p:=dbgen.WorkspaceProxy(s.T(),db, database.WorkspaceProxy{})
451+
check.Args(database.UpdateWorkspaceProxyParams{
452+
ID:p.ID,
453+
}).Asserts(p,rbac.ActionUpdate)
454+
}))
455+
s.Run("GetWorkspaceProxyByID",s.Subtest(func(db database.Store,check*expects) {
456+
p:=dbgen.WorkspaceProxy(s.T(),db, database.WorkspaceProxy{})
457+
check.Args(p.ID).Asserts(p,rbac.ActionRead).Returns(p)
458+
}))
459+
s.Run("UpdateWorkspaceProxyDeleted",s.Subtest(func(db database.Store,check*expects) {
460+
p:=dbgen.WorkspaceProxy(s.T(),db, database.WorkspaceProxy{})
461+
check.Args(database.UpdateWorkspaceProxyDeletedParams{
462+
ID:p.ID,
463+
Deleted:true,
464+
}).Asserts(p,rbac.ActionDelete)
465+
}))
466+
s.Run("GetWorkspaceProxies",s.Subtest(func(db database.Store,check*expects) {
467+
p1:=dbgen.WorkspaceProxy(s.T(),db, database.WorkspaceProxy{})
468+
p2:=dbgen.WorkspaceProxy(s.T(),db, database.WorkspaceProxy{})
469+
check.Args().Asserts(p1,rbac.ActionRead,p2,rbac.ActionRead).Returns(slice.New(p1,p2))
470+
}))
471+
}
472+
441473
func (s*MethodTestSuite)TestParameters() {
442474
s.Run("Workspace/InsertParameterValue",s.Subtest(func(db database.Store,check*expects) {
443475
w:=dbgen.Workspace(s.T(),db, database.Workspace{})

‎coderd/database/dbfake/databasefake.go

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ func New() database.Store {
6565
workspaceApps:make([]database.WorkspaceApp,0),
6666
workspaces:make([]database.Workspace,0),
6767
licenses:make([]database.License,0),
68+
workspaceProxies:make([]database.WorkspaceProxy,0),
6869
locks:map[int64]struct{}{},
6970
},
7071
}
@@ -131,6 +132,7 @@ type data struct {
131132
workspaceResourceMetadata []database.WorkspaceResourceMetadatum
132133
workspaceResources []database.WorkspaceResource
133134
workspaces []database.Workspace
135+
workspaceProxies []database.WorkspaceProxy
134136

135137
// Locks is a map of lock names. Any keys within the map are currently
136138
// locked.
@@ -4893,3 +4895,82 @@ func (q *fakeQuerier) UpdateWorkspaceAgentStartupLogOverflowByID(_ context.Conte
48934895
}
48944896
returnsql.ErrNoRows
48954897
}
4898+
4899+
func (q*fakeQuerier)GetWorkspaceProxies(ctx context.Context) ([]database.WorkspaceProxy,error) {
4900+
q.mutex.Lock()
4901+
deferq.mutex.Unlock()
4902+
4903+
cpy:=make([]database.WorkspaceProxy,len(q.workspaceProxies))
4904+
copy(cpy,q.workspaceProxies)
4905+
returncpy,nil
4906+
}
4907+
4908+
func (q*fakeQuerier)GetWorkspaceProxyByID(ctx context.Context,id uuid.UUID) (database.WorkspaceProxy,error) {
4909+
q.mutex.Lock()
4910+
deferq.mutex.Unlock()
4911+
4912+
for_,proxy:=rangeq.workspaceProxies {
4913+
ifproxy.ID==id {
4914+
returnproxy,nil
4915+
}
4916+
}
4917+
return database.WorkspaceProxy{},sql.ErrNoRows
4918+
}
4919+
4920+
func (q*fakeQuerier)InsertWorkspaceProxy(ctx context.Context,arg database.InsertWorkspaceProxyParams) (database.WorkspaceProxy,error) {
4921+
q.mutex.Lock()
4922+
deferq.mutex.Unlock()
4923+
4924+
for_,p:=rangeq.workspaceProxies {
4925+
if!p.Deleted&&p.OrganizationID==arg.OrganizationID&&p.Name==arg.Name {
4926+
return database.WorkspaceProxy{},errDuplicateKey
4927+
}
4928+
}
4929+
4930+
p:= database.WorkspaceProxy{
4931+
ID:arg.ID,
4932+
OrganizationID:arg.OrganizationID,
4933+
Name:arg.Name,
4934+
Icon:arg.Icon,
4935+
Url:arg.Url,
4936+
WildcardUrl:arg.WildcardUrl,
4937+
CreatedAt:arg.CreatedAt,
4938+
UpdatedAt:arg.UpdatedAt,
4939+
Deleted:false,
4940+
}
4941+
q.workspaceProxies=append(q.workspaceProxies,p)
4942+
returnp,nil
4943+
}
4944+
4945+
func (q*fakeQuerier)UpdateWorkspaceProxy(ctx context.Context,arg database.UpdateWorkspaceProxyParams) (database.WorkspaceProxy,error) {
4946+
q.mutex.Lock()
4947+
deferq.mutex.Unlock()
4948+
4949+
fori,p:=rangeq.workspaceProxies {
4950+
ifp.ID==arg.ID {
4951+
p.Name=arg.Name
4952+
p.Icon=arg.Icon
4953+
p.Url=arg.Url
4954+
p.WildcardUrl=arg.WildcardUrl
4955+
p.UpdatedAt=database.Now()
4956+
q.workspaceProxies[i]=p
4957+
returnp,nil
4958+
}
4959+
}
4960+
return database.WorkspaceProxy{},sql.ErrNoRows
4961+
}
4962+
4963+
func (q*fakeQuerier)UpdateWorkspaceProxyDeleted(ctx context.Context,arg database.UpdateWorkspaceProxyDeletedParams)error {
4964+
q.mutex.Lock()
4965+
deferq.mutex.Unlock()
4966+
4967+
fori,p:=rangeq.workspaceProxies {
4968+
ifp.ID==arg.ID {
4969+
p.Deleted=arg.Deleted
4970+
p.UpdatedAt=database.Now()
4971+
q.workspaceProxies[i]=p
4972+
returnnil
4973+
}
4974+
}
4975+
returnsql.ErrNoRows
4976+
}

‎coderd/database/dbgen/generator.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,21 @@ func WorkspaceResourceMetadatums(t testing.TB, db database.Store, seed database.
326326
returnmeta
327327
}
328328

329+
funcWorkspaceProxy(t testing.TB,db database.Store,orig database.WorkspaceProxy) database.WorkspaceProxy {
330+
resource,err:=db.InsertWorkspaceProxy(context.Background(), database.InsertWorkspaceProxyParams{
331+
ID:takeFirst(orig.ID,uuid.New()),
332+
OrganizationID:takeFirst(orig.OrganizationID,uuid.New()),
333+
Name:takeFirst(orig.Name,namesgenerator.GetRandomName(1)),
334+
Icon:takeFirst(orig.Icon,namesgenerator.GetRandomName(1)),
335+
Url:takeFirst(orig.Url,fmt.Sprintf("https://%s.com",namesgenerator.GetRandomName(1))),
336+
WildcardUrl:takeFirst(orig.WildcardUrl,fmt.Sprintf("https://*.%s.com",namesgenerator.GetRandomName(1))),
337+
CreatedAt:takeFirst(orig.CreatedAt,database.Now()),
338+
UpdatedAt:takeFirst(orig.UpdatedAt,database.Now()),
339+
})
340+
require.NoError(t,err,"insert app")
341+
returnresource
342+
}
343+
329344
funcFile(t testing.TB,db database.Store,orig database.File) database.File {
330345
file,err:=db.InsertFile(context.Background(), database.InsertFileParams{
331346
ID:takeFirst(orig.ID,uuid.New()),

‎coderd/database/dbgen/generator_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,13 @@ func TestGenerator(t *testing.T) {
7575
require.Equal(t,exp,must(db.GetWorkspaceResourceMetadataByResourceIDs(context.Background(), []uuid.UUID{exp[0].WorkspaceResourceID})))
7676
})
7777

78+
t.Run("WorkspaceProxy",func(t*testing.T) {
79+
t.Parallel()
80+
db:=dbfake.New()
81+
exp:=dbgen.WorkspaceProxy(t,db, database.WorkspaceProxy{})
82+
require.Equal(t,exp,must(db.GetWorkspaceProxyByID(context.Background(),exp.ID)))
83+
})
84+
7885
t.Run("Job",func(t*testing.T) {
7986
t.Parallel()
8087
db:=dbfake.New()

‎coderd/database/dump.sql

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
BEGIN;
2+
DROPTABLE workspace_proxies;
3+
4+
COMMIT;
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
BEGIN;
2+
CREATETABLEworkspace_proxies (
3+
id uuidNOT NULL,
4+
organization_id uuidNOT NULL,
5+
nametextNOT NULL,
6+
icontextNOT NULL,
7+
urltextNOT NULL,
8+
wildcard_urltextNOT NULL,
9+
created_attimestamp with time zoneNOT NULL,
10+
updated_attimestamp with time zoneNOT NULL,
11+
deletedbooleanNOT NULL,
12+
13+
PRIMARY KEY (id)
14+
);
15+
16+
COMMENT ON COLUMN workspace_proxies.url IS'Full url including scheme of the proxy api url: https://us.example.com';
17+
COMMENT ON COLUMN workspace_proxies.wildcard_url IS'URL with the wildcard for subdomain based app hosting: https://*.us.example.com';
18+
19+
20+
-- Enforces no active proxies have the same name.
21+
CREATEUNIQUE INDEXON workspace_proxies (organization_id, name)WHERE deleted= FALSE;
22+
23+
COMMIT;
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
INSERT INTO workspace_proxies
2+
(id, organization_id, name, icon, url, wildcard_url, created_at, updated_at, deleted)
3+
VALUES
4+
(
5+
'cf8ede8c-ff47-441f-a738-d92e4e34a657',
6+
'bb640d07-ca8a-4869-b6bc-ae61ebb2fda1',
7+
'US',
8+
'/emojis/us.png',
9+
'https://us.coder.com',
10+
'https://*.us.coder.com',
11+
'2023-03-30 12:00:00.000+02',
12+
'2023-03-30 12:00:00.000+02',
13+
false
14+
);

‎coderd/database/modelmethods.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,12 @@ func (p ProvisionerDaemon) RBACObject() rbac.Object {
181181
returnrbac.ResourceProvisionerDaemon.WithID(p.ID)
182182
}
183183

184+
func (wWorkspaceProxy)RBACObject() rbac.Object {
185+
returnrbac.ResourceWorkspaceProxy.
186+
WithID(w.ID).
187+
InOrg(w.OrganizationID)
188+
}
189+
184190
func (fFile)RBACObject() rbac.Object {
185191
returnrbac.ResourceFile.
186192
WithID(f.ID).

‎coderd/database/models.go

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/querier.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp