Skip to content

Commit 47075c2

Browse files
committed
fix: lint fix
1 parent 6e08414 commit 47075c2

File tree

3 files changed

+41
-73
lines changed

3 files changed

+41
-73
lines changed

packages/cli/src/actions/pull/index.ts

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { getAttributeRef, getDbName } from './utils';
88
export function syncEnums({
99
dbEnums,
1010
model,
11-
options: options,
11+
options,
1212
services,
1313
}: {
1414
dbEnums: IntrospectedEnum[];
@@ -23,18 +23,18 @@ export function syncEnums({
2323
if (modified)
2424
factory.addAttribute((builder) =>
2525
builder
26-
.setDecl(getAttributeRef('@@map', services)!)
26+
.setDecl(getAttributeRef('@@map', services))
2727
.addArg((argBuilder) => argBuilder.StringLiteral.setValue(dbEnum.enum_type)),
2828
);
2929

30-
dbEnum.values.map((v) => {
30+
dbEnum.values.forEach((v) => {
3131
const { name, modified } = resolveNameCasing(options, v);
3232
factory.addField((builder) => {
3333
builder.setName(name);
3434
if (modified)
3535
builder.addAttribute((builder) =>
3636
builder
37-
.setDecl(getAttributeRef('@map', services)!)
37+
.setDecl(getAttributeRef('@map', services))
3838
.addArg((argBuilder) => argBuilder.StringLiteral.setValue(v)),
3939
);
4040

@@ -46,7 +46,7 @@ export function syncEnums({
4646
}
4747

4848
function resolveNameCasing(options: PullOptions, originalName: string) {
49-
let name: string;
49+
let name = originalName;
5050

5151
switch (options.naming) {
5252
case 'pascal':
@@ -61,10 +61,6 @@ function resolveNameCasing(options: PullOptions, originalName: string) {
6161
case 'kebab':
6262
name = toKebabCase(originalName);
6363
break;
64-
case 'none':
65-
default:
66-
name = originalName;
67-
break;
6864
}
6965

7066
return {
@@ -188,7 +184,7 @@ export function syncTable({
188184
typeBuilder.setArray(builtinType.isArray);
189185
typeBuilder.setOptional(column.nullable);
190186

191-
if (builtinType.type != 'Unsupported') {
187+
if (builtinType.type !== 'Unsupported') {
192188
typeBuilder.setType(builtinType.type);
193189
} else {
194190
typeBuilder.setUnsupported((unsupportedBuilder) =>
@@ -246,8 +242,11 @@ export function syncTable({
246242
modelFactory.addAttribute((builder) =>
247243
builder.setDecl(modelIdAttribute).addArg((argBuilder) => {
248244
const arrayExpr = argBuilder.ArrayExpr;
249-
pkColumns.map((c) => {
250-
const ref = modelFactory.node.fields.find((f) => getDbName(f) === c)!;
245+
pkColumns.forEach((c) => {
246+
const ref = modelFactory.node.fields.find((f) => getDbName(f) === c);
247+
if (!ref) {
248+
throw new Error(`Field ${c} not found`);
249+
}
251250
arrayExpr.addItem((itemBuilder) => itemBuilder.ReferenceExpr.setTarget(ref));
252251
});
253252
return arrayExpr;
@@ -260,8 +259,11 @@ export function syncTable({
260259
modelFactory.addAttribute((builder) =>
261260
builder.setDecl(modelUniqueAttribute).addArg((argBuilder) => {
262261
const arrayExpr = argBuilder.ArrayExpr;
263-
uniqieColumns.map((c) => {
264-
const ref = modelFactory.node.fields.find((f) => getDbName(f) === c)!;
262+
uniqieColumns.forEach((c) => {
263+
const ref = modelFactory.node.fields.find((f) => getDbName(f) === c);
264+
if (!ref) {
265+
throw new Error(`Field ${c} not found`);
266+
}
265267
arrayExpr.addItem((itemBuilder) => itemBuilder.ReferenceExpr.setTarget(ref));
266268
});
267269
return arrayExpr;
@@ -296,9 +298,11 @@ export function syncTable({
296298
.setDecl(index.unique ? modelUniqueAttribute : modelindexAttribute)
297299
.addArg((argBuilder) => {
298300
const arrayExpr = argBuilder.ArrayExpr;
299-
index.columns.map((c) => {
300-
const ref = modelFactory.node.fields.find((f) => getDbName(f) === c.name)!;
301-
if (!ref) console.log(c, table.name);
301+
index.columns.forEach((c) => {
302+
const ref = modelFactory.node.fields.find((f) => getDbName(f) === c.name);
303+
if (!ref) {
304+
throw new Error(`Column ${c.name} not found in model ${table.name}`);
305+
}
302306
arrayExpr.addItem((itemBuilder) => {
303307
const refExpr = itemBuilder.ReferenceExpr.setTarget(ref);
304308
if (c.order !== 'ASC') refExpr.addArg((ab) => ab.StringLiteral.setValue('DESC'), 'sort');

packages/cli/src/actions/pull/provider/postgresql.ts

Lines changed: 3 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -61,48 +61,6 @@ export const postgresql: IntrospectionProvider = {
6161
case 'json':
6262
case 'jsonb':
6363
return { type: 'Json', isArray };
64-
65-
// unsupported or postgres-specific
66-
case 'time':
67-
case 'timetz':
68-
case 'interval':
69-
case 'money':
70-
case 'xml':
71-
case 'bit':
72-
case 'varbit':
73-
case 'cidr':
74-
case 'inet':
75-
case 'macaddr':
76-
case 'macaddr8':
77-
case 'point':
78-
case 'line':
79-
case 'lseg':
80-
case 'box':
81-
case 'path':
82-
case 'polygon':
83-
case 'circle':
84-
case 'tsvector':
85-
case 'tsquery':
86-
case 'jsonpath':
87-
case 'hstore':
88-
case 'oid':
89-
case 'name':
90-
case 'regclass':
91-
case 'regproc':
92-
case 'regprocedure':
93-
case 'regoper':
94-
case 'regoperator':
95-
case 'regtype':
96-
case 'regconfig':
97-
case 'regdictionary':
98-
case 'pg_lsn':
99-
case 'txid_snapshot':
100-
case 'int4range':
101-
case 'int8range':
102-
case 'numrange':
103-
case 'tsrange':
104-
case 'tstzrange':
105-
case 'daterange':
10664
default:
10765
return { type: 'Unsupported' as const, isArray };
10866
}
@@ -123,13 +81,13 @@ export const postgresql: IntrospectionProvider = {
12381
const val = defaultValue.trim();
12482
const factories: DataFieldAttributeFactory[] = [];
12583

126-
const defaultAttr = new DataFieldAttributeFactory().setDecl(getAttributeRef('@default', services)!);
84+
const defaultAttr = new DataFieldAttributeFactory().setDecl(getAttributeRef('@default', services));
12785

12886
if (val === 'CURRENT_TIMESTAMP' || val === 'now()') {
129-
factories.push(defaultAttr.addArg((ab) => ab.InvocationExpr.setFunction(getFunctionRef('now', services)!)));
87+
factories.push(defaultAttr.addArg((ab) => ab.InvocationExpr.setFunction(getFunctionRef('now', services))));
13088

13189
if (fieldName.toLowerCase() === 'updatedat' || fieldName.toLowerCase() === 'updated_at') {
132-
factories.push(new DataFieldAttributeFactory().setDecl(getAttributeRef('@updatedAt', services)!));
90+
factories.push(new DataFieldAttributeFactory().setDecl(getAttributeRef('@updatedAt', services)));
13391
}
13492
return factories;
13593
}

packages/cli/src/actions/pull/utils.ts

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import type { ZModelServices } from '@zenstackhq/language';
22
import {
3-
AbstractDeclaration,
4-
DataField,
5-
DataModel,
6-
Enum,
7-
EnumField,
8-
FunctionDecl,
3+
type AbstractDeclaration,
4+
type DataField,
5+
type DataModel,
6+
type Enum,
7+
type EnumField,
8+
type FunctionDecl,
99
isInvocationExpr,
1010
type Attribute,
1111
type Model,
@@ -15,8 +15,10 @@ import type { DataSourceProviderType } from '@zenstackhq/sdk/schema';
1515
import type { Reference } from 'langium';
1616

1717
export function getAttribute(model: Model, attrName: string) {
18-
const references = model.$document!.references as Reference<AbstractDeclaration>[];
19-
return references.find((a) => a.ref!.$type === 'Attribute' && a.ref!.name === attrName)?.ref as
18+
if (!model.$document) throw new Error('Model is not associated with a document.');
19+
20+
const references = model.$document.references as Reference<AbstractDeclaration>[];
21+
return references.find((a) => a.ref?.$type === 'Attribute' && a.ref?.name === attrName)?.ref as
2022
| Attribute
2123
| undefined;
2224
}
@@ -27,7 +29,9 @@ export function getDatasource(model: Model) {
2729
throw new Error('No datasource declaration found in the schema.');
2830
}
2931

30-
const urlField = datasource.fields.find((f) => f.name === 'url')!;
32+
const urlField = datasource.fields.find((f) => f.name === 'url');
33+
34+
if (!urlField) throw new Error(`No url field found in the datasource declaration.`);
3135

3236
let url = getStringLiteral(urlField.value);
3337

@@ -73,9 +77,11 @@ export function getDeclarationRef<T extends AbstractDeclaration>(
7377
name: string,
7478
services: ZModelServices,
7579
) {
76-
return services.shared.workspace.IndexManager.allElements(type).find(
80+
const node = services.shared.workspace.IndexManager.allElements(type).find(
7781
(m) => m.node && getDbName(m.node as T) === name,
78-
)?.node as T | undefined;
82+
)?.node;
83+
if (!node) throw new Error(`Declaration not found: ${name}`);
84+
return node as T;
7985
}
8086

8187
export function getEnumRef(name: string, services: ZModelServices) {

0 commit comments

Comments
 (0)