Skip to content

Commit 068d727

Browse files
authored
Fix types from recent changes (#2919)
1 parent 7535c3e commit 068d727

File tree

9 files changed

+27
-19
lines changed

9 files changed

+27
-19
lines changed

src/common/generate-id.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ const alphabet =
77
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
88
const size = 11;
99

10-
export const generateId = customAlphabet(alphabet, size) as () => Promise<ID>;
10+
export const generateId: <TID extends ID = ID>() => Promise<TID> =
11+
customAlphabet(alphabet, size) as any;
1112

1213
export const isValidId = (value: unknown): value is ID => {
1314
if (typeof value !== 'string') {

src/common/resource.dto.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,9 @@ export class EnhancedResource<T extends ResourceShape<any>> {
244244
return this.dbLabels[0];
245245
}
246246
@Once()
247-
get dbPropLabels() {
247+
get dbPropLabels(): {
248+
readonly [K in keyof T['prototype'] & string]?: readonly string[];
249+
} {
248250
return mapValues.fromList(this.props, (prop) =>
249251
getDbPropertyLabels(this.type, prop),
250252
).asRecord;

src/components/budget/budget.repository.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import {
2626
requestingUser,
2727
sorting,
2828
} from '../../core/database/query';
29+
import { FileId } from '../file';
2930
import { BudgetRecordRepository } from './budget-record.repository';
3031
import {
3132
Budget,
@@ -59,7 +60,7 @@ export class BudgetRepository extends DtoRepository<
5960

6061
async create(
6162
input: CreateBudget,
62-
universalTemplateFileId: ID,
63+
universalTemplateFileId: FileId,
6364
session: Session,
6465
) {
6566
const initialProps = {

src/components/budget/budget.service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import {
1616
import { HandleIdLookup, ILogger, Logger, ResourceResolver } from '../../core';
1717
import { mapListResults } from '../../core/database/results';
1818
import { Privileges, ScopedRole } from '../authorization';
19-
import { FileService } from '../file';
19+
import { FileId, FileService } from '../file';
2020
import { ProjectChangeRequest } from '../project-change-request/dto';
2121
import { BudgetRecordRepository } from './budget-record.repository';
2222
import { BudgetRepository } from './budget.repository';
@@ -65,7 +65,7 @@ export class BudgetService {
6565
throw new NotFoundException('project does not exist', 'budget.projectId');
6666
}
6767

68-
const universalTemplateFileId = await generateId();
68+
const universalTemplateFileId = await generateId<FileId>();
6969

7070
try {
7171
const budgetId = await this.budgetRepo.create(

src/components/engagement/engagement.repository.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ export class EngagementRepository extends CommonRepository {
162162
input: CreateLanguageEngagement,
163163
changeset?: ID,
164164
) {
165-
const pnpId = (await generateId()) as FileId;
165+
const pnpId = await generateId<FileId>();
166166

167167
const {
168168
projectId,
@@ -209,7 +209,7 @@ export class EngagementRepository extends CommonRepository {
209209
input: CreateInternshipEngagement,
210210
changeset?: ID,
211211
) {
212-
const growthPlanId = (await generateId()) as FileId;
212+
const growthPlanId = await generateId<FileId>();
213213

214214
const {
215215
projectId,

src/components/location/location.repository.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
paginate,
2020
sorting,
2121
} from '../../core/database/query';
22+
import { FileId } from '../file';
2223
import { CreateLocation, Location, LocationListInput } from './dto';
2324

2425
@Injectable()
@@ -33,7 +34,7 @@ export class LocationRepository extends DtoRepository(Location) {
3334
}
3435

3536
async create(input: CreateLocation, session: Session) {
36-
const mapImageId = await generateId();
37+
const mapImageId = await generateId<FileId>();
3738

3839
const initialProps = {
3940
name: input.name,

src/components/partnership/partnership.repository.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import {
2929
sorting,
3030
whereNotDeletedInChangeset,
3131
} from '../../core/database/query';
32+
import { FileId } from '../file';
3233
import {
3334
CreatePartnership,
3435
Partnership,
@@ -42,8 +43,8 @@ export class PartnershipRepository extends DtoRepository<
4243
[session: Session, view?: ObjectView]
4344
>(Partnership) {
4445
async create(input: CreatePartnership, session: Session, changeset?: ID) {
45-
const mouId = await generateId();
46-
const agreementId = await generateId();
46+
const mouId = await generateId<FileId>();
47+
const agreementId = await generateId<FileId>();
4748

4849
const initialProps = {
4950
agreementStatus:

src/core/database/database.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ export class DatabaseService {
273273
await this.updateProperty({
274274
type,
275275
object,
276-
key: prop,
276+
key: prop as any,
277277
value: change as any,
278278
changeset,
279279
permanentAfter,

src/core/database/query/create-node.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,36 @@ import { entries } from '@seedcompany/common';
22
import { node, Query, relation } from 'cypher-query-builder';
33
import { DateTime } from 'luxon';
44
import {
5-
// eslint-disable-next-line @seedcompany/no-unused-vars -- used in jsdoc
6-
DbLabel,
75
EnhancedResource,
86
generateId,
97
ID,
8+
MaybeUnsecuredInstance,
9+
Resource,
1010
ResourceShape,
11-
UnsecuredDto,
12-
} from '../../../common';
11+
} from '~/common';
1312
import { FileId } from '../../../components/file';
1413
import { Variable } from '../query-augmentation/condition-variables';
1514

1615
export interface CreateNodeOptions<TResourceStatic extends ResourceShape<any>> {
17-
initialProps?: InitialPropsOf<UnsecuredDto<TResourceStatic['prototype']>>;
16+
initialProps?: InitialPropsOf<
17+
MaybeUnsecuredInstance<TResourceStatic> &
18+
Partial<Pick<Resource, 'id' | 'createdAt'>>
19+
>;
1820
baseNodeProps?: Record<string, any>;
1921
}
2022

2123
type InitialPropsOf<T> = {
22-
[K in keyof T]?: Variable | (T[K] extends FileId ? ID : T[K]);
24+
[K in keyof T & string]?: Variable | (T[K] extends FileId ? ID : T[K]);
2325
};
2426

2527
/**
2628
* This aids in composing create statements for a new base node and its initial properties.
2729
*
2830
* id & createdAt properties are generated and applied automatically.
2931
* BaseNode labels are pulled from the resource's class hierarchy or manually
30-
* defined with {@link DbLabel @DbLabel()}
32+
* defined with {@link import('~/common').DbLabel @DbLabel()}
3133
*
32-
* Any unique labels for properties are pulled from {@link DbLabel @DbLabel()}
34+
* Any unique labels for properties are pulled from {@link import('~/common').DbLabel @DbLabel()}
3335
* decoration on the resource's properties.
3436
*
3537
* Note that we need to define all properties at create even if they are null/undefined.

0 commit comments

Comments
 (0)