joist-codegen 0.1.538 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/build/EntityDbMetadata.d.ts +71 -23
  2. package/build/EntityDbMetadata.js +229 -63
  3. package/build/EntityDbMetadata.js.map +1 -1
  4. package/build/EntityDbMetadata.test.js +5 -5
  5. package/build/EntityDbMetadata.test.js.map +1 -1
  6. package/build/assignTags.d.ts +1 -1
  7. package/build/assignTags.js +2 -2
  8. package/build/assignTags.js.map +1 -1
  9. package/build/config.d.ts +8 -1
  10. package/build/config.js +25 -13
  11. package/build/config.js.map +1 -1
  12. package/build/config.test.d.ts +1 -0
  13. package/build/config.test.js +37 -0
  14. package/build/config.test.js.map +1 -0
  15. package/build/generateEntitiesFile.d.ts +2 -1
  16. package/build/generateEntitiesFile.js +6 -3
  17. package/build/generateEntitiesFile.js.map +1 -1
  18. package/build/generateEntityCodegenFile.d.ts +2 -4
  19. package/build/generateEntityCodegenFile.js +278 -90
  20. package/build/generateEntityCodegenFile.js.map +1 -1
  21. package/build/generateEnumFile.d.ts +2 -3
  22. package/build/generateEnumFile.js +15 -10
  23. package/build/generateEnumFile.js.map +1 -1
  24. package/build/generateFactoriesFiles.js +4 -4
  25. package/build/generateFactoriesFiles.js.map +1 -1
  26. package/build/generateInitialEntityFile.js +7 -2
  27. package/build/generateInitialEntityFile.js.map +1 -1
  28. package/build/generateMetadataFile.js +96 -69
  29. package/build/generateMetadataFile.js.map +1 -1
  30. package/build/generatePgEnumFile.d.ts +4 -0
  31. package/build/generatePgEnumFile.js +18 -0
  32. package/build/generatePgEnumFile.js.map +1 -0
  33. package/build/index.d.ts +24 -8
  34. package/build/index.js +116 -40
  35. package/build/index.js.map +1 -1
  36. package/build/symbols.d.ts +62 -51
  37. package/build/symbols.js +64 -52
  38. package/build/symbols.js.map +1 -1
  39. package/build/utils.d.ts +4 -2
  40. package/build/utils.js +20 -11
  41. package/build/utils.js.map +1 -1
  42. package/package.json +26 -14
  43. package/jest.config.js +0 -10
  44. package/package.json.bak +0 -28
  45. package/src/EntityDbMetadata.test.ts +0 -42
  46. package/src/EntityDbMetadata.ts +0 -322
  47. package/src/assignTags.ts +0 -45
  48. package/src/config.ts +0 -82
  49. package/src/generateEntitiesFile.ts +0 -26
  50. package/src/generateEntityCodegenFile.ts +0 -414
  51. package/src/generateEnumFile.ts +0 -63
  52. package/src/generateFactoriesFiles.ts +0 -29
  53. package/src/generateInitialEntityFile.ts +0 -12
  54. package/src/generateMetadataFile.ts +0 -175
  55. package/src/index.ts +0 -180
  56. package/src/symbols.ts +0 -53
  57. package/src/utils.ts +0 -88
  58. package/tsconfig.json +0 -21
  59. package/tsconfig.tsbuildinfo +0 -3377
@@ -1,86 +1,133 @@
1
1
  import { M2ORelation, O2MRelation, Table } from "pg-structure";
2
- import { SymbolSpec } from "ts-poet/build/SymbolSpecs";
2
+ import { Import } from "ts-poet";
3
3
  import { Config } from "./config";
4
+ import { EnumMetadata, EnumRow } from "./index";
4
5
  /** Codegen-time metadata about a given domain entity. */
5
6
  export declare type Entity = {
6
7
  name: string;
7
8
  /** The symbol pointing to the entity itself. */
8
- type: SymbolSpec;
9
+ type: Import;
9
10
  /** The name of the entity's runtime metadata const. */
10
11
  metaName: string;
11
12
  /** The symbol pointing to the entity's runtime metadata const. */
12
- metaType: SymbolSpec;
13
+ metaType: Import;
13
14
  /** The symbol pointing to the entity's EntityId type. */
14
- idType: SymbolSpec;
15
+ idType: Import;
15
16
  /** The symbol pointing to the entity's Order type. */
16
- orderType: SymbolSpec;
17
+ orderType: Import;
17
18
  /** The symbol pointing to the entity's config const. */
18
- configConst: SymbolSpec;
19
- optsType: SymbolSpec;
19
+ configConst: Import;
20
+ optsType: Import;
20
21
  };
21
- export declare type PrimitiveField = {
22
+ export declare type DatabaseColumnType = "boolean" | "int" | "uuid" | "numeric" | "text" | "citext" | "character varying" | "varchar" | "timestamp with time zone" | "date" | "jsonb";
23
+ /**
24
+ * A logical entity field.
25
+ *
26
+ * I.e. it may be a physical db column, or multiple physical db columns, or a "virtual" field like
27
+ * the one-to-many collection side of a many-to-one foreign key. */
28
+ interface Field {
22
29
  fieldName: string;
30
+ ignore?: boolean;
31
+ }
32
+ export declare type PrimitiveTypescriptType = "boolean" | "string" | "number" | "Date" | "Object";
33
+ export declare type PrimitiveField = Field & {
34
+ kind: "primitive";
23
35
  columnName: string;
24
- columnType: string;
36
+ columnType: DatabaseColumnType;
25
37
  columnDefault: number | boolean | string | null;
26
- fieldType: string | SymbolSpec;
38
+ fieldType: PrimitiveTypescriptType | Import;
39
+ rawFieldType: PrimitiveTypescriptType;
27
40
  notNull: boolean;
28
41
  derived: "orm" | "sync" | "async" | false;
29
42
  protected: boolean;
43
+ superstruct: Import | undefined;
30
44
  };
31
- export declare type EnumField = {
32
- fieldName: string;
45
+ export declare type EnumField = Field & {
46
+ kind: "enum";
33
47
  columnName: string;
48
+ columnDefault: number | boolean | string | null;
34
49
  enumName: string;
35
- enumType: SymbolSpec;
36
- enumDetailType: SymbolSpec;
50
+ enumType: Import;
51
+ enumDetailType: Import;
52
+ enumDetailsType: Import;
53
+ enumRows: EnumRow[];
54
+ notNull: boolean;
55
+ isArray: boolean;
56
+ };
57
+ export declare type PgEnumField = Field & {
58
+ kind: "pg-enum";
59
+ columnName: string;
60
+ columnDefault: number | boolean | string | null;
61
+ enumName: string;
62
+ enumType: Import;
63
+ enumValues: string[];
37
64
  notNull: boolean;
38
65
  };
39
66
  /** I.e. a `Book.author` reference pointing to an `Author`. */
40
- export declare type ManyToOneField = {
41
- fieldName: string;
67
+ export declare type ManyToOneField = Field & {
68
+ kind: "m2o";
42
69
  columnName: string;
70
+ dbType: string;
43
71
  otherFieldName: string;
44
72
  otherEntity: Entity;
45
73
  notNull: boolean;
46
74
  };
47
75
  /** I.e. a `Author.books` collection. */
48
- export declare type OneToManyField = {
49
- fieldName: string;
76
+ export declare type OneToManyField = Field & {
77
+ kind: "o2m";
50
78
  singularName: string;
51
79
  otherEntity: Entity;
52
80
  otherFieldName: string;
53
81
  otherColumnName: string;
54
82
  otherColumnNotNull: boolean;
83
+ isLargeCollection: boolean;
55
84
  };
56
85
  /** I.e. a `Author.image` reference when `image.author_id` is unique. */
57
- export declare type OneToOneField = {
58
- fieldName: string;
86
+ export declare type OneToOneField = Field & {
87
+ kind: "o2o";
59
88
  otherEntity: Entity;
60
89
  otherFieldName: string;
61
90
  otherColumnName: string;
62
91
  otherColumnNotNull: boolean;
63
92
  };
64
- export declare type ManyToManyField = {
93
+ export declare type ManyToManyField = Field & {
94
+ kind: "m2m";
65
95
  joinTableName: string;
66
- fieldName: string;
67
96
  singularName: string;
68
97
  columnName: string;
69
98
  otherEntity: Entity;
70
99
  otherFieldName: string;
71
100
  otherColumnName: string;
101
+ isLargeCollection: boolean;
102
+ };
103
+ /** I.e. a `Comment.parent` reference that groups `comments.parent_book_id` and `comments.parent_book_review_id`. */
104
+ export declare type PolymorphicField = Field & {
105
+ fieldType: string;
106
+ notNull: boolean;
107
+ components: PolymorphicFieldComponent[];
108
+ };
109
+ export declare type PolymorphicFieldComponent = {
110
+ columnName: string;
111
+ otherFieldName: string;
112
+ otherEntity: Entity;
72
113
  };
73
114
  /** Adapts the generally-great pg-structure metadata into our specific ORM types. */
74
115
  export declare class EntityDbMetadata {
75
116
  entity: Entity;
117
+ idDbType: string;
76
118
  primitives: PrimitiveField[];
77
119
  enums: EnumField[];
120
+ pgEnums: PgEnumField[];
78
121
  manyToOnes: ManyToOneField[];
79
122
  oneToManys: OneToManyField[];
123
+ largeOneToManys: OneToManyField[];
80
124
  oneToOnes: OneToOneField[];
81
125
  manyToManys: ManyToManyField[];
126
+ largeManyToManys: ManyToManyField[];
127
+ polymorphics: PolymorphicField[];
82
128
  tableName: string;
83
- constructor(config: Config, table: Table);
129
+ tagName: string;
130
+ constructor(config: Config, table: Table, enums?: EnumMetadata);
84
131
  get name(): string;
85
132
  }
86
133
  export declare function oneToOneName(config: Config, entity: Entity, otherEntity: Entity): string;
@@ -91,3 +138,4 @@ export declare function collectionName(config: Config, entity: Entity, otherEnti
91
138
  singularName: string;
92
139
  };
93
140
  export declare function makeEntity(entityName: string): Entity;
141
+ export {};
@@ -7,41 +7,70 @@ const pluralize_1 = require("pluralize");
7
7
  const ts_poet_1 = require("ts-poet");
8
8
  const config_1 = require("./config");
9
9
  const utils_1 = require("./utils");
10
- // TODO Populate from config
11
- const columnCustomizations = {};
12
10
  /** Adapts the generally-great pg-structure metadata into our specific ORM types. */
13
11
  class EntityDbMetadata {
14
- constructor(config, table) {
15
- this.entity = makeEntity(utils_1.tableToEntityName(config, table));
12
+ constructor(config, table, enums = {}) {
13
+ this.entity = makeEntity((0, utils_1.tableToEntityName)(config, table));
14
+ this.idDbType = table.columns.filter((c) => c.isPrimaryKey).map((c) => c.type.shortName)[0] ?? (0, utils_1.fail)();
16
15
  this.primitives = table.columns
17
16
  .filter((c) => !c.isPrimaryKey && !c.isForeignKey)
18
- .map((column) => newPrimitive(config, this.entity, column, table));
19
- this.enums = table.m2oRelations.filter((r) => utils_1.isEnumTable(r.targetTable)).map((r) => newEnumField(config, r));
17
+ .filter((c) => !isEnumArray(c) && !isPgEnum(c))
18
+ .map((column) => newPrimitive(config, this.entity, column, table))
19
+ .filter((f) => !f.ignore);
20
+ this.enums = [
21
+ ...table.m2oRelations
22
+ .filter((r) => (0, utils_1.isEnumTable)(r.targetTable))
23
+ .map((r) => newEnumField(config, this.entity, r, enums))
24
+ .filter((f) => !f.ignore),
25
+ ...table.columns
26
+ .filter((c) => isEnumArray(c))
27
+ .map((column) => newEnumArrayField(config, this.entity, column, enums))
28
+ .filter((f) => !f.ignore),
29
+ ];
30
+ this.pgEnums = [
31
+ ...table.columns
32
+ .filter((c) => isPgEnum(c))
33
+ .map((column) => newPgEnumField(config, this.entity, column, table))
34
+ .filter((f) => !f.ignore),
35
+ ];
20
36
  this.manyToOnes = table.m2oRelations
21
- .filter((r) => !utils_1.isEnumTable(r.targetTable))
37
+ .filter((r) => !(0, utils_1.isEnumTable)(r.targetTable))
22
38
  .filter((r) => !isMultiColumnForeignKey(r))
23
- .map((r) => newManyToOneField(config, this.entity, r));
24
- this.oneToManys = table.o2mRelations
39
+ .filter((r) => !isComponentOfPolymorphicRelation(config, r))
40
+ .map((r) => newManyToOneField(config, this.entity, r))
41
+ .filter((f) => !f.ignore);
42
+ // We split these into regular/large...
43
+ const allOneToManys = table.o2mRelations
25
44
  // ManyToMany join tables also show up as OneToMany tables in pg-structure
26
- .filter((r) => !utils_1.isJoinTable(r.targetTable))
45
+ .filter((r) => !(0, utils_1.isJoinTable)(r.targetTable))
27
46
  .filter((r) => !isMultiColumnForeignKey(r))
28
47
  .filter((r) => !isOneToOneRelation(r))
29
- .map((r) => newOneToMany(config, this.entity, r));
48
+ .map((r) => newOneToMany(config, this.entity, r))
49
+ .filter((f) => !f.ignore);
50
+ this.oneToManys = allOneToManys.filter((f) => !f.isLargeCollection);
51
+ this.largeOneToManys = allOneToManys.filter((f) => f.isLargeCollection);
30
52
  this.oneToOnes = table.o2mRelations
31
53
  // ManyToMany join tables also show up as OneToMany tables in pg-structure
32
- .filter((r) => !utils_1.isJoinTable(r.targetTable))
54
+ .filter((r) => !(0, utils_1.isJoinTable)(r.targetTable))
33
55
  .filter((r) => !isMultiColumnForeignKey(r))
34
56
  .filter((r) => isOneToOneRelation(r))
35
- .map((r) => newOneToOne(config, this.entity, r));
36
- this.manyToManys = table.m2mRelations
57
+ .map((r) => newOneToOne(config, this.entity, r))
58
+ .filter((f) => !f.ignore);
59
+ // We split these into regular/large
60
+ const allManyToManys = table.m2mRelations
37
61
  // pg-structure is really loose on what it considers a m2m relationship, i.e. any entity
38
62
  // that has a foreign key to us, and a foreign key to something else, is automatically
39
63
  // considered as a join table/m2m between "us" and "something else". Filter these out
40
64
  // by looking for only true join tables, i.e. tables with only id, fk1, and fk2.
41
- .filter((r) => utils_1.isJoinTable(r.joinTable))
65
+ .filter((r) => (0, utils_1.isJoinTable)(r.joinTable))
42
66
  .filter((r) => !isMultiColumnForeignKey(r))
43
- .map((r) => newManyToManyField(config, this.entity, r));
67
+ .map((r) => newManyToManyField(config, this.entity, r))
68
+ .filter((f) => !f.ignore);
69
+ this.manyToManys = allManyToManys.filter((f) => !f.isLargeCollection);
70
+ this.largeManyToManys = allManyToManys.filter((f) => f.isLargeCollection);
71
+ this.polymorphics = polymorphicRelations(config, table).map((rc) => newPolymorphicField(config, table, this.entity, rc));
44
72
  this.tableName = table.name;
73
+ this.tagName = config.entities[this.entity.name]?.tag;
45
74
  }
46
75
  get name() {
47
76
  return this.entity.name;
@@ -52,107 +81,235 @@ function isMultiColumnForeignKey(r) {
52
81
  return r.foreignKey.columns.length > 1;
53
82
  }
54
83
  function isOneToOneRelation(r) {
55
- var _a;
56
84
  // otherColumn will be the images.book_id in the other table
57
85
  const otherColumn = r.foreignKey.columns[0];
58
86
  // r.foreignKey.index is the index on _us_ (i.e. our Book primary key), so look up indexes in the target table
59
- const indexes = ((_a = r.targetTable.columns.find((c) => c.name == otherColumn.name)) === null || _a === void 0 ? void 0 : _a.uniqueIndexes) || [];
87
+ const indexes = r.targetTable.columns.find((c) => c.name == otherColumn.name)?.uniqueIndexes || [];
60
88
  // If the column is the only column in an unique index, it's a one-to-one
61
89
  return indexes.find((i) => i.columns.length === 1) !== undefined;
62
90
  }
91
+ function polymorphicRelations(config, table) {
92
+ const entity = config.entities[(0, utils_1.tableToEntityName)(config, table)];
93
+ return Object.entries(entity?.relations ?? {})
94
+ .filter(([, r]) => r.polymorphic)
95
+ .map(([name, relation]) => ({ name, ...relation }));
96
+ }
97
+ function polymorphicFieldName(config, r) {
98
+ const { name } = r.foreignKey.columns[0];
99
+ const table = r instanceof pg_structure_1.M2ORelation ? r.sourceTable : r.targetTable;
100
+ return polymorphicRelations(config, table).find((pr) => name.startsWith(`${(0, change_case_1.snakeCase)(pr.name)}_`))?.name;
101
+ }
102
+ function isComponentOfPolymorphicRelation(config, r) {
103
+ return polymorphicFieldName(config, r) !== undefined;
104
+ }
63
105
  function newPrimitive(config, entity, column, table) {
64
- const fieldName = change_case_1.camelCase(column.name);
106
+ const fieldName = primitiveFieldName(column.name);
65
107
  const columnName = column.name;
108
+ const columnType = (column.type.shortName || column.type.name);
109
+ const fieldType = mapType(table.name, columnName, columnType);
110
+ const superstruct = (0, config_1.superstructConfig)(config, entity, fieldName);
111
+ const maybeUserType = fieldType === "Object" && superstruct ? superstructType(superstruct) : fieldType;
66
112
  return {
113
+ kind: "primitive",
67
114
  fieldName,
68
115
  columnName,
69
- columnType: column.type.shortName || column.type.name,
70
- fieldType: mapType(table.name, columnName, column.type.shortName || column.type.name).fieldType,
116
+ columnType,
117
+ fieldType: maybeUserType,
118
+ rawFieldType: fieldType,
71
119
  notNull: column.notNull,
72
120
  columnDefault: column.default,
73
121
  derived: fieldDerived(config, entity, fieldName),
74
- protected: config_1.isProtected(config, entity, fieldName),
122
+ protected: (0, config_1.isProtected)(config, entity, fieldName),
123
+ ignore: (0, config_1.isFieldIgnored)(config, entity, fieldName, column.notNull, column.default !== null),
124
+ superstruct: fieldType === "Object" && superstruct ? ts_poet_1.Import.from(superstruct) : undefined,
75
125
  };
76
126
  }
77
127
  function fieldDerived(config, entity, fieldName) {
78
128
  if (config_1.ormMaintainedFields.includes(fieldName)) {
79
129
  return "orm";
80
130
  }
81
- else if (config_1.isDerived(config, entity, fieldName)) {
131
+ else if ((0, config_1.isDerived)(config, entity, fieldName)) {
82
132
  return "sync";
83
133
  }
84
- else if (config_1.isAsyncDerived(config, entity, fieldName)) {
134
+ else if ((0, config_1.isAsyncDerived)(config, entity, fieldName)) {
85
135
  return "async";
86
136
  }
87
137
  else {
88
138
  return false;
89
139
  }
90
140
  }
91
- function newEnumField(config, r) {
141
+ function newEnumField(config, entity, r, enums) {
92
142
  const column = r.foreignKey.columns[0];
93
143
  const columnName = column.name;
94
- const fieldName = change_case_1.camelCase(column.name.replace("_id", ""));
95
- const enumName = utils_1.tableToEntityName(config, r.targetTable);
96
- const enumType = ts_poet_1.imp(`${enumName}@./entities`);
97
- const enumDetailType = ts_poet_1.imp(`${pluralize_1.plural(enumName)}@./entities`);
144
+ const fieldName = enumFieldName(column.name);
145
+ const enumName = (0, utils_1.tableToEntityName)(config, r.targetTable);
146
+ const enumType = (0, ts_poet_1.imp)(`${enumName}@./entities`);
147
+ const enumDetailType = (0, ts_poet_1.imp)(`${(0, pluralize_1.plural)(enumName)}@./entities`);
148
+ const enumDetailsType = (0, ts_poet_1.imp)(`${enumName}Details@./entities`);
149
+ const notNull = column.notNull;
150
+ const ignore = (0, config_1.isFieldIgnored)(config, entity, fieldName, notNull, column.default !== null);
151
+ return {
152
+ kind: "enum",
153
+ fieldName,
154
+ columnName,
155
+ columnDefault: column.default,
156
+ enumName,
157
+ enumType,
158
+ enumDetailType,
159
+ enumDetailsType,
160
+ notNull,
161
+ ignore,
162
+ enumRows: enums[r.targetTable.name].rows,
163
+ isArray: false,
164
+ };
165
+ }
166
+ function newEnumArrayField(config, entity, column, enums) {
167
+ const columnName = column.name;
168
+ const fieldName = enumFieldName(column.name);
169
+ // Find the enum table name via the comment hint (instead of a FK constraint), and strip the enum= prefix
170
+ const enumTable = column.comment.replace("enum=", "");
171
+ const enumName = (enums[enumTable] || (0, utils_1.fail)(`Could not find enum ${enumTable}`)).name;
172
+ const enumType = (0, ts_poet_1.imp)(`${enumName}@./entities`);
173
+ const enumDetailType = (0, ts_poet_1.imp)(`${(0, pluralize_1.plural)(enumName)}@./entities`);
174
+ const enumDetailsType = (0, ts_poet_1.imp)(`${enumName}Details@./entities`);
98
175
  const notNull = column.notNull;
99
- return { fieldName, columnName, enumName, enumType, enumDetailType, notNull };
176
+ const ignore = (0, config_1.isFieldIgnored)(config, entity, fieldName, notNull, column.default !== null);
177
+ return {
178
+ kind: "enum",
179
+ fieldName,
180
+ columnName,
181
+ columnDefault: column.default,
182
+ enumName,
183
+ enumType,
184
+ enumDetailType,
185
+ enumDetailsType,
186
+ notNull,
187
+ ignore,
188
+ enumRows: enums[enumTable].rows,
189
+ isArray: true,
190
+ };
191
+ }
192
+ function newPgEnumField(config, entity, column, table) {
193
+ const fieldName = primitiveFieldName(column.name);
194
+ const columnName = column.name;
195
+ const enumName = (0, change_case_1.pascalCase)(column.type.name);
196
+ const enumType = (0, ts_poet_1.imp)(`${enumName}@./entities`);
197
+ return {
198
+ kind: "pg-enum",
199
+ fieldName,
200
+ columnName,
201
+ enumType,
202
+ enumName,
203
+ enumValues: column.type.values,
204
+ notNull: column.notNull,
205
+ columnDefault: column.default,
206
+ ignore: (0, config_1.isFieldIgnored)(config, entity, fieldName, column.notNull, column.default !== null),
207
+ };
100
208
  }
101
209
  function newManyToOneField(config, entity, r) {
102
210
  const column = r.foreignKey.columns[0];
103
211
  const columnName = column.name;
212
+ const dbType = r.foreignKey.columns[0].type.shortName;
104
213
  const fieldName = referenceName(config, entity, r);
105
- const otherEntity = makeEntity(utils_1.tableToEntityName(config, r.targetTable));
214
+ const otherEntity = makeEntity((0, utils_1.tableToEntityName)(config, r.targetTable));
106
215
  const isOneToOne = column.uniqueIndexes.find((i) => i.columns.length === 1) !== undefined;
107
216
  const otherFieldName = isOneToOne
108
217
  ? oneToOneName(config, otherEntity, entity)
109
218
  : collectionName(config, otherEntity, entity, r).fieldName;
110
219
  const notNull = column.notNull;
111
- return { fieldName, columnName, otherEntity, otherFieldName, notNull };
220
+ const ignore = (0, config_1.isFieldIgnored)(config, entity, fieldName, notNull, column.default !== null);
221
+ return { kind: "m2o", fieldName, columnName, otherEntity, otherFieldName, notNull, ignore, dbType };
112
222
  }
113
223
  function newOneToMany(config, entity, r) {
114
224
  const column = r.foreignKey.columns[0];
115
225
  // source == parent i.e. the reference of the foreign key column
116
226
  // target == child i.e. the table with the foreign key column in it
117
- const otherEntity = makeEntity(utils_1.tableToEntityName(config, r.targetTable));
227
+ const otherEntity = makeEntity((0, utils_1.tableToEntityName)(config, r.targetTable));
118
228
  const { singularName, fieldName } = collectionName(config, entity, otherEntity, r);
119
229
  const otherFieldName = referenceName(config, otherEntity, r);
120
- const otherColumnName = column.name;
121
- const otherColumnNotNull = column.notNull;
122
- return { fieldName, singularName, otherEntity, otherFieldName, otherColumnName, otherColumnNotNull };
230
+ return {
231
+ kind: "o2m",
232
+ fieldName,
233
+ singularName,
234
+ otherEntity,
235
+ otherFieldName,
236
+ otherColumnName: column.name,
237
+ otherColumnNotNull: column.notNull,
238
+ ignore: (0, config_1.isFieldIgnored)(config, entity, fieldName) || (0, config_1.isFieldIgnored)(config, otherEntity, otherFieldName),
239
+ isLargeCollection: (0, config_1.isLargeCollection)(config, entity, fieldName),
240
+ };
123
241
  }
124
242
  function newOneToOne(config, entity, r) {
125
243
  const column = r.foreignKey.columns[0];
126
244
  // source == parent i.e. the reference of the foreign key column
127
245
  // target == child i.e. the table with the foreign key column in it
128
- const otherEntity = makeEntity(utils_1.tableToEntityName(config, r.targetTable));
246
+ const otherEntity = makeEntity((0, utils_1.tableToEntityName)(config, r.targetTable));
129
247
  const fieldName = oneToOneName(config, entity, otherEntity);
130
248
  const otherFieldName = referenceName(config, otherEntity, r);
131
249
  const otherColumnName = column.name;
132
250
  const otherColumnNotNull = column.notNull;
133
- return { fieldName, otherEntity, otherFieldName, otherColumnName, otherColumnNotNull };
251
+ const ignore = (0, config_1.isFieldIgnored)(config, entity, fieldName) || (0, config_1.isFieldIgnored)(config, otherEntity, otherFieldName);
252
+ return { kind: "o2o", fieldName, otherEntity, otherFieldName, otherColumnName, otherColumnNotNull, ignore };
134
253
  }
135
254
  function newManyToManyField(config, entity, r) {
136
255
  const { foreignKey, targetForeignKey, targetTable } = r;
137
- const joinTableName = r.joinTable.name;
138
- const otherEntity = makeEntity(utils_1.tableToEntityName(config, targetTable));
139
- const fieldName = config_1.relationName(config, entity, change_case_1.camelCase(pluralize_1.plural(targetForeignKey.columns[0].name.replace("_id", ""))));
140
- const otherFieldName = config_1.relationName(config, otherEntity, change_case_1.camelCase(pluralize_1.plural(foreignKey.columns[0].name.replace("_id", ""))));
141
- const columnName = foreignKey.columns[0].name;
142
- const otherColumnName = targetForeignKey.columns[0].name;
143
- const singularName = pluralize_1.singular(fieldName);
144
- return { joinTableName, fieldName, singularName, columnName, otherEntity, otherFieldName, otherColumnName };
256
+ const otherEntity = makeEntity((0, utils_1.tableToEntityName)(config, targetTable));
257
+ const fieldName = (0, config_1.relationName)(config, entity, (0, change_case_1.camelCase)((0, pluralize_1.plural)(targetForeignKey.columns[0].name.replace("_id", ""))));
258
+ const otherFieldName = (0, config_1.relationName)(config, otherEntity, (0, change_case_1.camelCase)((0, pluralize_1.plural)(foreignKey.columns[0].name.replace("_id", ""))));
259
+ return {
260
+ kind: "m2m",
261
+ joinTableName: r.joinTable.name,
262
+ fieldName,
263
+ singularName: (0, pluralize_1.singular)(fieldName),
264
+ columnName: foreignKey.columns[0].name,
265
+ otherEntity,
266
+ otherFieldName,
267
+ otherColumnName: targetForeignKey.columns[0].name,
268
+ ignore: (0, config_1.isFieldIgnored)(config, entity, fieldName) || (0, config_1.isFieldIgnored)(config, otherEntity, otherFieldName),
269
+ isLargeCollection: (0, config_1.isLargeCollection)(config, entity, fieldName),
270
+ };
271
+ }
272
+ function newPolymorphicField(config, table, entity, rc) {
273
+ const { polymorphic, name } = rc;
274
+ const fieldName = name;
275
+ const components = table.m2oRelations
276
+ .filter((r) => !(0, utils_1.isEnumTable)(r.targetTable))
277
+ .filter((r) => !isMultiColumnForeignKey(r))
278
+ .filter((r) => polymorphicFieldName(config, r) === fieldName)
279
+ .map((r) => newPolymorphicFieldComponent(config, entity, r));
280
+ return {
281
+ fieldName,
282
+ fieldType: `${entity.name}${(0, change_case_1.pascalCase)(fieldName)}`,
283
+ notNull: polymorphic === "notNull",
284
+ components,
285
+ };
286
+ }
287
+ function newPolymorphicFieldComponent(config, entity, r) {
288
+ const column = r.foreignKey.columns[0];
289
+ const columnName = column.name;
290
+ const otherEntity = makeEntity((0, utils_1.tableToEntityName)(config, r.targetTable));
291
+ const isOneToOne = column.uniqueIndexes.find((i) => i.columns.length === 1) !== undefined;
292
+ const otherFieldName = isOneToOne
293
+ ? oneToOneName(config, otherEntity, entity)
294
+ : collectionName(config, otherEntity, entity, r).fieldName;
295
+ return { columnName, otherEntity, otherFieldName };
145
296
  }
146
297
  function oneToOneName(config, entity, otherEntity) {
147
- return config_1.relationName(config, entity, change_case_1.camelCase(otherEntity.name));
298
+ return (0, config_1.relationName)(config, entity, (0, change_case_1.camelCase)(otherEntity.name));
148
299
  }
149
300
  exports.oneToOneName = oneToOneName;
150
301
  function referenceName(config, entity, r) {
151
302
  const column = r.foreignKey.columns[0];
152
- const fieldName = change_case_1.camelCase(column.name.replace("_id", ""));
153
- return config_1.relationName(config, entity, fieldName);
303
+ const fieldName = polymorphicFieldName(config, r) ?? (0, change_case_1.camelCase)(column.name.replace("_id", ""));
304
+ return (0, config_1.relationName)(config, entity, fieldName);
154
305
  }
155
306
  exports.referenceName = referenceName;
307
+ function enumFieldName(columnName) {
308
+ return (0, change_case_1.camelCase)(columnName.replace("_id", ""));
309
+ }
310
+ function primitiveFieldName(columnName) {
311
+ return (0, change_case_1.camelCase)(columnName);
312
+ }
156
313
  /** Returns the collection name to use on `entity` when referring to `otherEntity`s. */
157
314
  function collectionName(config, entity, otherEntity, r) {
158
315
  // TODO Handle conflicts in names
@@ -169,12 +326,12 @@ function collectionName(config, entity, otherEntity, r) {
169
326
  fieldName = fieldName.replace(entity.name, "");
170
327
  }
171
328
  // camelize the name
172
- let singularName = change_case_1.camelCase(fieldName);
173
- fieldName = change_case_1.camelCase(pluralize_1.plural(fieldName));
329
+ let singularName = (0, change_case_1.camelCase)(fieldName);
330
+ fieldName = (0, change_case_1.camelCase)((0, pluralize_1.plural)(fieldName));
174
331
  // If the name is overridden, use that, but also singularize it
175
- const maybeOverriddenName = config_1.relationName(config, entity, fieldName);
332
+ const maybeOverriddenName = (0, config_1.relationName)(config, entity, fieldName);
176
333
  if (maybeOverriddenName !== fieldName) {
177
- singularName = pluralize_1.singular(maybeOverriddenName);
334
+ singularName = (0, pluralize_1.singular)(maybeOverriddenName);
178
335
  fieldName = maybeOverriddenName;
179
336
  }
180
337
  return { singularName, fieldName };
@@ -186,25 +343,34 @@ function makeEntity(entityName) {
186
343
  type: entityType(entityName),
187
344
  metaName: metaName(entityName),
188
345
  metaType: metaType(entityName),
189
- idType: ts_poet_1.imp(`${entityName}Id@./entities`, { definedIn: `./${entityName}Codegen` }),
190
- orderType: ts_poet_1.imp(`${entityName}Order@./entities`, { definedIn: `./${entityName}Codegen` }),
191
- optsType: ts_poet_1.imp(`${entityName}Opts@./entities`, { definedIn: `./${entityName}Codegen` }),
192
- configConst: ts_poet_1.imp(`${change_case_1.camelCase(entityName)}Config@./entities`, { definedIn: `./${entityName}Codegen` }),
346
+ idType: (0, ts_poet_1.imp)(`${entityName}Id@./entities`, { definedIn: `./${entityName}Codegen` }),
347
+ orderType: (0, ts_poet_1.imp)(`${entityName}Order@./entities`, { definedIn: `./${entityName}Codegen` }),
348
+ optsType: (0, ts_poet_1.imp)(`${entityName}Opts@./entities`, { definedIn: `./${entityName}Codegen` }),
349
+ configConst: (0, ts_poet_1.imp)(`${(0, change_case_1.camelCase)(entityName)}Config@./entities`, { definedIn: `./${entityName}Codegen` }),
193
350
  };
194
351
  }
195
352
  exports.makeEntity = makeEntity;
196
353
  function metaName(entityName) {
197
- return `${change_case_1.camelCase(entityName)}Meta`;
354
+ return `${(0, change_case_1.camelCase)(entityName)}Meta`;
198
355
  }
199
356
  function metaType(entityName) {
200
- return ts_poet_1.imp(`${metaName(entityName)}@./entities`);
357
+ return (0, ts_poet_1.imp)(`${metaName(entityName)}@./entities`);
201
358
  }
202
359
  function entityType(entityName) {
203
- return ts_poet_1.imp(`${entityName}@./entities`);
360
+ return (0, ts_poet_1.imp)(`${entityName}@./entities`);
204
361
  }
205
362
  function mapType(tableName, columnName, dbColumnType) {
206
- return (columnCustomizations[`${tableName}.${columnName}`] || {
207
- fieldType: utils_1.mapSimpleDbType(dbColumnType),
208
- });
363
+ return (0, utils_1.mapSimpleDbTypeToTypescriptType)(dbColumnType);
364
+ }
365
+ function isEnumArray(c) {
366
+ return c.arrayDimension === 1 && !!c.comment && c.comment.startsWith("enum=");
367
+ }
368
+ function isPgEnum(c) {
369
+ return c.type instanceof pg_structure_1.EnumType;
370
+ }
371
+ function superstructType(s) {
372
+ // Assume it's `foo@...`, turn it into `Foo@...`
373
+ const [symbol, path] = s.split("@");
374
+ return ts_poet_1.Import.from(`${(0, change_case_1.pascalCase)(symbol)}@${path}`);
209
375
  }
210
376
  //# sourceMappingURL=EntityDbMetadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityDbMetadata.js","sourceRoot":"","sources":["../src/EntityDbMetadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EntityDbMetadata.js","sourceRoot":"","sources":["../src/EntityDbMetadata.ts"],"names":[],"mappings":"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"}