Skip to content

Commit 118fd2b

Browse files
authored
Merge pull request #2979 from SeedCompany/hide-neo4j-in-repos
Make update Neo4j properties/relations implementation details of repos
2 parents cea7dc0 + 6ad64e5 commit 118fd2b

File tree

56 files changed

+574
-487
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+574
-487
lines changed

src/components/authorization/policy/executor/user-resource-privileges.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
UnauthorizedException,
1414
UnsecuredDto,
1515
} from '~/common';
16-
import { ChangesOf, isRelation } from '~/core/database/changes';
16+
import { AnyChangesOf, isRelation } from '~/core/database/changes';
1717
import {
1818
AnyAction,
1919
ChildListAction,
@@ -169,7 +169,7 @@ export class UserResourcePrivileges<
169169
* Verifies the current user can make the changes specified to the given object.
170170
*/
171171
verifyChanges(
172-
changes: ChangesOf<TResourceStatic['prototype']>,
172+
changes: AnyChangesOf<TResourceStatic['prototype']>,
173173
{
174174
pathPrefix: pathPrefixProp,
175175
}: {

src/components/budget/budget-record.repository.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Injectable } from '@nestjs/common';
22
import { node, Query, relation } from 'cypher-query-builder';
3+
import { ChangesOf } from '~/core/database/changes';
34
import {
45
ID,
56
labelForView,
@@ -21,7 +22,13 @@ import {
2122
paginate,
2223
sorting,
2324
} from '../../core/database/query';
24-
import { BudgetRecord, BudgetRecordListInput, CreateBudgetRecord } from './dto';
25+
import {
26+
Budget,
27+
BudgetRecord,
28+
BudgetRecordListInput,
29+
CreateBudgetRecord,
30+
UpdateBudgetRecord,
31+
} from './dto';
2532

2633
interface BudgetRecordHydrateArgs {
2734
recordVar?: string;
@@ -66,6 +73,14 @@ export class BudgetRecordRepository extends DtoRepository<
6673
return result.id;
6774
}
6875

76+
async update(
77+
existing: BudgetRecord,
78+
changes: ChangesOf<Budget, UpdateBudgetRecord>,
79+
changeset?: ID,
80+
) {
81+
return await this.updateProperties(existing, changes, changeset);
82+
}
83+
6984
async doesRecordExist(input: CreateBudgetRecord) {
7085
const result = await this.db
7186
.query()

src/components/budget/budget.repository.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Injectable } from '@nestjs/common';
22
import { inArray, node, Query, relation } from 'cypher-query-builder';
33
import { pickBy } from 'lodash';
4+
import { ChangesOf } from '~/core/database/changes';
45
import {
56
ID,
67
labelForView,
@@ -11,7 +12,7 @@ import {
1112
UnsecuredDto,
1213
viewOfChangeset,
1314
} from '../../common';
14-
import { DatabaseService, DtoRepository } from '../../core';
15+
import { DtoRepository } from '../../core';
1516
import {
1617
ACTIVE,
1718
createNode,
@@ -34,18 +35,16 @@ import {
3435
BudgetRecord,
3536
CreateBudget,
3637
BudgetStatus as Status,
38+
UpdateBudget,
3739
} from './dto';
3840

3941
@Injectable()
4042
export class BudgetRepository extends DtoRepository<
4143
typeof Budget,
4244
[session: Session, view?: ObjectView]
4345
>(Budget) {
44-
constructor(
45-
db: DatabaseService,
46-
private readonly records: BudgetRecordRepository,
47-
) {
48-
super(db);
46+
constructor(private readonly records: BudgetRecordRepository) {
47+
super();
4948
}
5049

5150
async doesProjectExist(projectId: ID, session: Session) {
@@ -88,6 +87,16 @@ export class BudgetRepository extends DtoRepository<
8887
return result.id;
8988
}
9089

90+
async update(
91+
existing: Budget,
92+
simpleChanges: Omit<
93+
ChangesOf<Budget, UpdateBudget>,
94+
'universalTemplateFile'
95+
>,
96+
) {
97+
return await this.updateProperties(existing, simpleChanges);
98+
}
99+
91100
async readMany(ids: readonly ID[], session: Session, view?: ObjectView) {
92101
const label = labelForView('Budget', view);
93102
return await this.db

src/components/budget/budget.service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ export class BudgetService {
228228
universalTemplateFile,
229229
session,
230230
);
231-
return await this.budgetRepo.updateProperties(budget, simpleChanges);
231+
return await this.budgetRepo.update(budget, simpleChanges);
232232
}
233233

234234
async updateRecord(
@@ -249,7 +249,7 @@ export class BudgetService {
249249
this.privileges.for(session, BudgetRecord, br).verifyChanges(changes);
250250

251251
try {
252-
const result = await this.budgetRecordsRepo.updateProperties(
252+
const result = await this.budgetRecordsRepo.update(
253253
br,
254254
changes,
255255
changeset,

src/components/ceremony/ceremony.repository.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Injectable } from '@nestjs/common';
22
import { node, Query, relation } from 'cypher-query-builder';
3+
import { ChangesOf } from '~/core/database/changes';
34
import { ID, Session, UnsecuredDto } from '../../common';
45
import { DtoRepository } from '../../core';
56
import {
@@ -12,7 +13,12 @@ import {
1213
requestingUser,
1314
sorting,
1415
} from '../../core/database/query';
15-
import { Ceremony, CeremonyListInput, CreateCeremony } from './dto';
16+
import {
17+
Ceremony,
18+
CeremonyListInput,
19+
CreateCeremony,
20+
UpdateCeremony,
21+
} from './dto';
1622

1723
@Injectable()
1824
export class CeremonyRepository extends DtoRepository<
@@ -35,6 +41,13 @@ export class CeremonyRepository extends DtoRepository<
3541
.first();
3642
}
3743

44+
async update(
45+
existing: Ceremony,
46+
changes: ChangesOf<Ceremony, UpdateCeremony>,
47+
) {
48+
return await this.updateProperties(existing, changes);
49+
}
50+
3851
protected hydrate(session: Session) {
3952
return (query: Query) =>
4053
query

src/components/ceremony/ceremony.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ export class CeremonyService {
7777
const object = await this.readOne(input.id, session);
7878
const changes = this.ceremonyRepo.getActualChanges(object, input);
7979
this.privileges.for(session, Ceremony, object).verifyChanges(changes);
80-
return await this.ceremonyRepo.updateProperties(object, changes);
80+
return await this.ceremonyRepo.update(object, changes);
8181
}
8282

8383
async delete(id: ID, session: Session): Promise<void> {

src/components/comments/comment-thread.repository.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { forwardRef, Inject, Injectable } from '@nestjs/common';
22
import { node, Query, relation } from 'cypher-query-builder';
33
import { ID, Session, UnsecuredDto } from '../../common';
4-
import { DatabaseService, DtoRepository } from '../../core';
4+
import { DtoRepository } from '../../core';
55
import {
66
ACTIVE,
77
createNode,
@@ -19,9 +19,8 @@ export class CommentThreadRepository extends DtoRepository(CommentThread) {
1919
constructor(
2020
@Inject(forwardRef(() => CommentRepository))
2121
private readonly comments: CommentRepository & {},
22-
db: DatabaseService,
2322
) {
24-
super(db);
23+
super();
2524
}
2625

2726
async create(parent: ID, session: Session) {

src/components/comments/comment.repository.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import { forwardRef, Inject, Injectable } from '@nestjs/common';
22
import { node, Query, relation } from 'cypher-query-builder';
33
import { DateTime } from 'luxon';
4+
import { ChangesOf } from '~/core/database/changes';
45
import { ID, Session, UnsecuredDto } from '../../common';
5-
import { DatabaseService, DtoRepository } from '../../core';
6+
import { DtoRepository } from '../../core';
67
import {
78
ACTIVE,
89
createNode,
@@ -15,16 +16,20 @@ import {
1516
variable,
1617
} from '../../core/database/query';
1718
import { CommentThreadRepository } from './comment-thread.repository';
18-
import { Comment, CommentListInput, CreateCommentInput } from './dto';
19+
import {
20+
Comment,
21+
CommentListInput,
22+
CreateCommentInput,
23+
UpdateCommentInput,
24+
} from './dto';
1925

2026
@Injectable()
2127
export class CommentRepository extends DtoRepository(Comment) {
2228
constructor(
2329
@Inject(forwardRef(() => CommentThreadRepository))
2430
readonly threads: CommentThreadRepository & {},
25-
db: DatabaseService,
2631
) {
27-
super(db);
32+
super();
2833
}
2934

3035
async create(input: CreateCommentInput, session: Session) {
@@ -56,6 +61,13 @@ export class CommentRepository extends DtoRepository(Comment) {
5661
.first();
5762
}
5863

64+
async update(
65+
existing: UnsecuredDto<Comment>,
66+
changes: ChangesOf<Comment, UpdateCommentInput>,
67+
) {
68+
await this.updateProperties(existing, changes);
69+
}
70+
5971
override hydrate() {
6072
return (query: Query) =>
6173
query

src/components/comments/comment.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ export class CommentService {
136136

137137
const changes = this.repo.getActualChanges(object, input);
138138
this.privileges.for(session, Comment, object).verifyChanges(changes);
139-
await this.repo.updateProperties(object, changes);
139+
await this.repo.update(object, changes);
140140

141141
return await this.readOne(input.id, session);
142142
}

0 commit comments

Comments
 (0)