Skip to content

Commit 47e725a

Browse files
committed
Add FieldZone EdgeDB repo
1 parent ca26033 commit 47e725a

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { Injectable } from '@nestjs/common';
2+
import { PublicOf } from '~/common';
3+
import { ChangesOf } from '~/core/database/changes';
4+
import { e, RepoFor } from '~/core/edgedb';
5+
import { CreateFieldZone, FieldZone, UpdateFieldZone } from './dto';
6+
import { FieldZoneRepository } from './field-zone.repository';
7+
8+
@Injectable()
9+
export class FieldZoneEdgeDBRepository
10+
extends RepoFor(FieldZone, {
11+
hydrate: (zone) => ({
12+
...zone['*'],
13+
director: true,
14+
}),
15+
}).customize((cls) => {
16+
return class extends cls {
17+
async create(input: CreateFieldZone) {
18+
const created = e.insert(e.FieldZone, {
19+
name: input.name,
20+
director: e.cast(e.User, e.cast(e.uuid, input.directorId)),
21+
});
22+
const query = e.select(created, this.hydrate);
23+
return await this.db.run(query);
24+
}
25+
26+
async update(
27+
{ id }: Pick<FieldZone, 'id'>,
28+
changes: ChangesOf<FieldZone, UpdateFieldZone>,
29+
) {
30+
const zone = e.cast(e.FieldZone, e.cast(e.uuid, id));
31+
const updated = e.update(zone, () => ({
32+
set: {
33+
...(changes.name && { name: changes.name }),
34+
...(changes.directorId && {
35+
director: e.cast(e.User, e.cast(e.uuid, changes.directorId)),
36+
}),
37+
},
38+
}));
39+
const query = e.select(updated, this.hydrate);
40+
return await this.db.run(query);
41+
}
42+
};
43+
})
44+
implements PublicOf<FieldZoneRepository> {}

src/components/field-zone/field-zone.module.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { forwardRef, Module } from '@nestjs/common';
2+
import { splitDb } from '~/core';
23
import { AuthorizationModule } from '../authorization/authorization.module';
34
import { UserModule } from '../user/user.module';
5+
import { FieldZoneEdgeDBRepository } from './field-zone.edgedb.repository';
46
import { FieldZoneLoader } from './field-zone.loader';
57
import { FieldZoneRepository } from './field-zone.repository';
68
import { FieldZoneResolver } from './field-zone.resolver';
@@ -14,7 +16,7 @@ import { FieldZoneService } from './field-zone.service';
1416
providers: [
1517
FieldZoneResolver,
1618
FieldZoneService,
17-
FieldZoneRepository,
19+
splitDb(FieldZoneRepository, FieldZoneEdgeDBRepository),
1820
FieldZoneLoader,
1921
],
2022
exports: [FieldZoneService],

0 commit comments

Comments
 (0)