@proteinjs/db 1.0.14 → 1.0.16

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 (105) hide show
  1. package/.eslintrc.js +20 -0
  2. package/.prettierignore +3 -0
  3. package/.prettierrc +8 -0
  4. package/CHANGELOG.md +14 -24
  5. package/LICENSE +21 -0
  6. package/dist/generated/index.js +1 -1
  7. package/dist/generated/index.js.map +1 -1
  8. package/dist/src/Columns.d.ts.map +1 -1
  9. package/dist/src/Columns.js +34 -17
  10. package/dist/src/Columns.js.map +1 -1
  11. package/dist/src/Db.d.ts.map +1 -1
  12. package/dist/src/Db.js +45 -18
  13. package/dist/src/Db.js.map +1 -1
  14. package/dist/src/MigrationRunner.d.ts.map +1 -1
  15. package/dist/src/MigrationRunner.js +15 -7
  16. package/dist/src/MigrationRunner.js.map +1 -1
  17. package/dist/src/QueryBuilderFactory.d.ts.map +1 -1
  18. package/dist/src/QueryBuilderFactory.js +5 -7
  19. package/dist/src/QueryBuilderFactory.js.map +1 -1
  20. package/dist/src/Record.d.ts.map +1 -1
  21. package/dist/src/Record.js +4 -2
  22. package/dist/src/Record.js.map +1 -1
  23. package/dist/src/StatementConfigFactory.d.ts.map +1 -1
  24. package/dist/src/StatementConfigFactory.js +3 -2
  25. package/dist/src/StatementConfigFactory.js.map +1 -1
  26. package/dist/src/Table.d.ts.map +1 -1
  27. package/dist/src/Table.js +6 -3
  28. package/dist/src/Table.js.map +1 -1
  29. package/dist/src/auth/TableAuth.d.ts.map +1 -1
  30. package/dist/src/auth/TableAuth.js +16 -11
  31. package/dist/src/auth/TableAuth.js.map +1 -1
  32. package/dist/src/auth/TableServiceAuth.d.ts.map +1 -1
  33. package/dist/src/auth/TableServiceAuth.js +12 -6
  34. package/dist/src/auth/TableServiceAuth.js.map +1 -1
  35. package/dist/src/reference/Reference.d.ts.map +1 -1
  36. package/dist/src/reference/Reference.js.map +1 -1
  37. package/dist/src/reference/ReferenceArray.d.ts.map +1 -1
  38. package/dist/src/reference/ReferenceArray.js.map +1 -1
  39. package/dist/src/schema/SchemaMetadata.d.ts.map +1 -1
  40. package/dist/src/schema/SchemaMetadata.js +18 -15
  41. package/dist/src/schema/SchemaMetadata.js.map +1 -1
  42. package/dist/src/schema/SchemaOperations.d.ts.map +1 -1
  43. package/dist/src/schema/TableManager.d.ts.map +1 -1
  44. package/dist/src/schema/TableManager.js +24 -9
  45. package/dist/src/schema/TableManager.js.map +1 -1
  46. package/dist/src/serializers/GraphSerializer.d.ts.map +1 -1
  47. package/dist/src/serializers/QueryBuilderSerializer.d.ts.map +1 -1
  48. package/dist/src/serializers/ReferenceArraySerializer.d.ts.map +1 -1
  49. package/dist/src/serializers/ReferenceArraySerializer.js.map +1 -1
  50. package/dist/src/serializers/ReferenceSerializer.d.ts.map +1 -1
  51. package/dist/src/serializers/TableSerializer.d.ts.map +1 -1
  52. package/dist/src/services/DbService.d.ts.map +1 -1
  53. package/dist/src/source/SourceRecord.d.ts.map +1 -1
  54. package/dist/src/source/SourceRecord.js +7 -3
  55. package/dist/src/source/SourceRecord.js.map +1 -1
  56. package/dist/src/source/SourceRecordLoader.d.ts.map +1 -1
  57. package/dist/src/source/SourceRecordLoader.js +11 -4
  58. package/dist/src/source/SourceRecordLoader.js.map +1 -1
  59. package/dist/src/source/SourceRecordRepo.d.ts.map +1 -1
  60. package/dist/src/source/SourceRecordRepo.js.map +1 -1
  61. package/dist/src/tables/MigrationTable.d.ts.map +1 -1
  62. package/dist/src/tables/MigrationTable.js.map +1 -1
  63. package/dist/src/tables/tables.d.ts.map +1 -1
  64. package/dist/src/tables/tables.js.map +1 -1
  65. package/dist/test/CrudTests.d.ts +2 -0
  66. package/dist/test/CrudTests.d.ts.map +1 -1
  67. package/dist/test/CrudTests.js +19 -4
  68. package/dist/test/CrudTests.js.map +1 -1
  69. package/dist/test/TableManagerTests.d.ts.map +1 -1
  70. package/dist/test/TableManagerTests.js +17 -9
  71. package/dist/test/TableManagerTests.js.map +1 -1
  72. package/generated/index.ts +15 -18
  73. package/index.ts +1 -1
  74. package/jest.config.js +8 -17
  75. package/package.json +49 -43
  76. package/src/Columns.ts +284 -241
  77. package/src/Db.ts +188 -147
  78. package/src/MigrationRunner.ts +24 -10
  79. package/src/QueryBuilderFactory.ts +6 -9
  80. package/src/Record.ts +35 -29
  81. package/src/StatementConfigFactory.ts +14 -16
  82. package/src/Table.ts +91 -88
  83. package/src/auth/TableAuth.ts +37 -27
  84. package/src/auth/TableServiceAuth.ts +11 -9
  85. package/src/opt/moment.ts +1 -1
  86. package/src/reference/Reference.ts +7 -7
  87. package/src/reference/ReferenceArray.ts +8 -8
  88. package/src/schema/SchemaMetadata.ts +84 -64
  89. package/src/schema/SchemaOperations.ts +2 -2
  90. package/src/schema/TableManager.ts +178 -168
  91. package/src/serializers/GraphSerializer.ts +4 -4
  92. package/src/serializers/QueryBuilderSerializer.ts +11 -11
  93. package/src/serializers/ReferenceArraySerializer.ts +12 -8
  94. package/src/serializers/ReferenceSerializer.ts +7 -7
  95. package/src/serializers/TableSerializer.ts +5 -5
  96. package/src/services/DbService.ts +3 -3
  97. package/src/services/MigrationRunnerService.ts +1 -1
  98. package/src/source/SourceRecord.ts +43 -24
  99. package/src/source/SourceRecordLoader.ts +29 -18
  100. package/src/source/SourceRecordRepo.ts +3 -3
  101. package/src/tables/MigrationTable.ts +5 -5
  102. package/src/tables/tables.ts +1 -1
  103. package/test/CrudTests.ts +46 -26
  104. package/test/TableManagerTests.ts +329 -154
  105. package/tsconfig.json +18 -22
@@ -9,190 +9,200 @@ export interface ColumnTypeFactory {
9
9
  }
10
10
 
11
11
  export class TableManager {
12
- private logger = new Logger(this.constructor.name);
13
- public columnTypeFactory: ColumnTypeFactory;
14
- public schemaOperations: SchemaOperations;
15
- public schemaMetadata: SchemaMetadata;
16
-
17
- constructor(
18
- dbDriver: DbDriver,
19
- columnTypeFactory: ColumnTypeFactory,
20
- schemaOperations: SchemaOperations,
21
- schemaMetadata?: SchemaMetadata
22
- ){
23
- this.columnTypeFactory = columnTypeFactory;
24
- this.schemaOperations = schemaOperations;
25
- this.schemaMetadata = schemaMetadata ? schemaMetadata : new SchemaMetadata(dbDriver);
26
- }
27
-
28
- async tableExists(table: Table<any>) {
29
- return await this.schemaMetadata.tableExists(table);
30
- }
31
-
32
- async loadTables(): Promise<void> {
33
- const tables = getTables();
34
- for (const table of tables)
35
- await this.loadTable(table);
36
- }
37
-
38
- async loadTable(table: Table<any>): Promise<void> {
39
- if (await this.tableExists(table)) {
40
- const tableChanges = await this.getTableChanges(table);
41
- if (this.shouldAlterTable(tableChanges)) {
42
- this.logger.info(`Altering table: ${table.name}`);
43
- await this.schemaOperations.alterTable(table, tableChanges);
44
- this.logger.info(`Finished altering table: ${table.name}`);
45
- }
46
- } else {
47
- this.logger.info(`Creating table: ${table.name}`);
48
- await this.schemaOperations.createTable(table);
49
- this.logger.info(`Finished creating table: ${table.name}`);
50
- }
51
- }
52
-
53
- private shouldAlterTable(tableChanges: TableChanges) {
54
- if (
55
- tableChanges.columnsToCreate.length == 0 &&
56
- tableChanges.columnsToRename.length == 0 &&
57
- tableChanges.columnsToAlter.length == 0 &&
58
- tableChanges.columnsWithForeignKeysToDrop.length == 0 &&
59
- tableChanges.columnsWithUniqueConstraintsToDrop.length == 0 &&
60
- tableChanges.indexesToCreate.length == 0 &&
61
- tableChanges.indexesToDrop.length == 0
62
- )
63
- return false;
64
-
65
- return true;
66
- }
67
-
68
- private async getTableChanges(table: Table<any>) {
69
- const { indexesToCreate, indexesToDrop } = await this.getIndexOperations(table);
70
- const tableChanges: TableChanges = {
71
- columnsToCreate: [],
72
- columnsToRename: [],
73
- columnsToAlter: [],
74
- columnTypeChanges: [],
75
- columnNullableChanges: [],
76
- columnsWithForeignKeysToCreate: [],
77
- foreignKeysToCreate: [],
78
- columnsWithForeignKeysToDrop: [],
79
- foreignKeysToDrop: [],
80
- columnsWithUniqueConstraintsToCreate: [],
81
- columnsWithUniqueConstraintsToDrop: [],
82
- indexesToCreate,
83
- indexesToDrop,
84
- };
85
-
86
- const columnMetadata = await this.schemaMetadata.getColumnMetadata(table);
87
- const uniqueColumns = await this.schemaMetadata.getUniqueColumns(table);
88
- const foreignKeys = await this.schemaMetadata.getForeignKeys(table);
89
- for (const columnPropertyName in table.columns) {
90
- const column = table.columns[columnPropertyName];
91
- if (columnMetadata[column.name]) {
92
- let alter = false;
93
- const columnType = this.columnTypeFactory.getType(column);
94
- const existingColumnType = columnMetadata[column.name].type;
95
- if (columnType != existingColumnType) {
96
- // console.log(`columnType != existingColumnType`);
97
- tableChanges.columnTypeChanges.push({ name: column.name, newType: columnType });
98
- alter = true;
99
- }
100
-
101
- if (
102
- (column.options?.nullable && !columnMetadata[column.name].isNullable) ||
103
- (column.options?.nullable === false && columnMetadata[column.name].isNullable)
104
- ) {
105
- // console.log(`column.options?.nullable`)
106
- tableChanges.columnNullableChanges.push({ name: column.name, nullable: column.options.nullable === true });
107
- alter = true;
108
- }
109
-
110
- if (
111
- column.options?.unique?.unique === false && uniqueColumns.includes(column.name)
112
- ) {
113
- // console.log(`column.options?.unique?.unique`)
114
- tableChanges.columnsWithUniqueConstraintsToDrop.push(column.name);
115
- alter = true;
116
- } else if (
117
- column.options?.unique?.unique && !uniqueColumns.includes(column.name)
118
- ) {
119
- tableChanges.columnsWithUniqueConstraintsToCreate.push(column.name);
120
- alter = true;
121
- }
122
-
123
- if (
124
- !column.options?.references && foreignKeys[column.name] ||
125
- column.options?.references && foreignKeys[column.name] && foreignKeys[column.name].referencedTableName != column.options.references.table
126
- ) {
127
- // console.log(`column.options?.references`)
128
- tableChanges.columnsWithForeignKeysToDrop.push(column.name);
129
- tableChanges.foreignKeysToDrop.push({ table: foreignKeys[column.name].referencedTableName, column: foreignKeys[column.name].referencedColumnName, referencedByColumn: column.name });
130
- alter = true;
131
- } else if (
132
- column.options?.references && !foreignKeys[column.name]
133
- ) {
134
- tableChanges.columnsWithForeignKeysToCreate.push(column.name);
135
- tableChanges.foreignKeysToCreate.push({ table: column.options.references.table, column: 'id', referencedByColumn: column.name });
136
- alter = true;
137
- }
138
-
139
- if (alter)
140
- tableChanges.columnsToAlter.push(columnPropertyName);
141
-
142
- continue;
143
- }
144
-
145
- if (column.oldName && columnMetadata[column.oldName]) {
146
- tableChanges.columnsToRename.push(columnPropertyName);
147
- continue;
148
- }
149
-
150
- tableChanges.columnsToCreate.push(columnPropertyName);
151
- }
152
-
153
- return tableChanges;
154
- }
155
-
156
- private async getIndexOperations(table: Table<any>) {
12
+ private logger = new Logger(this.constructor.name);
13
+ public columnTypeFactory: ColumnTypeFactory;
14
+ public schemaOperations: SchemaOperations;
15
+ public schemaMetadata: SchemaMetadata;
16
+
17
+ constructor(
18
+ dbDriver: DbDriver,
19
+ columnTypeFactory: ColumnTypeFactory,
20
+ schemaOperations: SchemaOperations,
21
+ schemaMetadata?: SchemaMetadata
22
+ ) {
23
+ this.columnTypeFactory = columnTypeFactory;
24
+ this.schemaOperations = schemaOperations;
25
+ this.schemaMetadata = schemaMetadata ? schemaMetadata : new SchemaMetadata(dbDriver);
26
+ }
27
+
28
+ async tableExists(table: Table<any>) {
29
+ return await this.schemaMetadata.tableExists(table);
30
+ }
31
+
32
+ async loadTables(): Promise<void> {
33
+ const tables = getTables();
34
+ for (const table of tables) {
35
+ await this.loadTable(table);
36
+ }
37
+ }
38
+
39
+ async loadTable(table: Table<any>): Promise<void> {
40
+ if (await this.tableExists(table)) {
41
+ const tableChanges = await this.getTableChanges(table);
42
+ if (this.shouldAlterTable(tableChanges)) {
43
+ this.logger.info(`Altering table: ${table.name}`);
44
+ await this.schemaOperations.alterTable(table, tableChanges);
45
+ this.logger.info(`Finished altering table: ${table.name}`);
46
+ }
47
+ } else {
48
+ this.logger.info(`Creating table: ${table.name}`);
49
+ await this.schemaOperations.createTable(table);
50
+ this.logger.info(`Finished creating table: ${table.name}`);
51
+ }
52
+ }
53
+
54
+ private shouldAlterTable(tableChanges: TableChanges) {
55
+ if (
56
+ tableChanges.columnsToCreate.length == 0 &&
57
+ tableChanges.columnsToRename.length == 0 &&
58
+ tableChanges.columnsToAlter.length == 0 &&
59
+ tableChanges.columnsWithForeignKeysToDrop.length == 0 &&
60
+ tableChanges.columnsWithUniqueConstraintsToDrop.length == 0 &&
61
+ tableChanges.indexesToCreate.length == 0 &&
62
+ tableChanges.indexesToDrop.length == 0
63
+ ) {
64
+ return false;
65
+ }
66
+
67
+ return true;
68
+ }
69
+
70
+ private async getTableChanges(table: Table<any>) {
71
+ const { indexesToCreate, indexesToDrop } = await this.getIndexOperations(table);
72
+ const tableChanges: TableChanges = {
73
+ columnsToCreate: [],
74
+ columnsToRename: [],
75
+ columnsToAlter: [],
76
+ columnTypeChanges: [],
77
+ columnNullableChanges: [],
78
+ columnsWithForeignKeysToCreate: [],
79
+ foreignKeysToCreate: [],
80
+ columnsWithForeignKeysToDrop: [],
81
+ foreignKeysToDrop: [],
82
+ columnsWithUniqueConstraintsToCreate: [],
83
+ columnsWithUniqueConstraintsToDrop: [],
84
+ indexesToCreate,
85
+ indexesToDrop,
86
+ };
87
+
88
+ const columnMetadata = await this.schemaMetadata.getColumnMetadata(table);
89
+ const uniqueColumns = await this.schemaMetadata.getUniqueColumns(table);
90
+ const foreignKeys = await this.schemaMetadata.getForeignKeys(table);
91
+ for (const columnPropertyName in table.columns) {
92
+ const column = table.columns[columnPropertyName];
93
+ if (columnMetadata[column.name]) {
94
+ let alter = false;
95
+ const columnType = this.columnTypeFactory.getType(column);
96
+ const existingColumnType = columnMetadata[column.name].type;
97
+ if (columnType != existingColumnType) {
98
+ // console.log(`columnType != existingColumnType`);
99
+ tableChanges.columnTypeChanges.push({ name: column.name, newType: columnType });
100
+ alter = true;
101
+ }
102
+
103
+ if (
104
+ (column.options?.nullable && !columnMetadata[column.name].isNullable) ||
105
+ (column.options?.nullable === false && columnMetadata[column.name].isNullable)
106
+ ) {
107
+ // console.log(`column.options?.nullable`)
108
+ tableChanges.columnNullableChanges.push({ name: column.name, nullable: column.options.nullable === true });
109
+ alter = true;
110
+ }
111
+
112
+ if (column.options?.unique?.unique === false && uniqueColumns.includes(column.name)) {
113
+ // console.log(`column.options?.unique?.unique`)
114
+ tableChanges.columnsWithUniqueConstraintsToDrop.push(column.name);
115
+ alter = true;
116
+ } else if (column.options?.unique?.unique && !uniqueColumns.includes(column.name)) {
117
+ tableChanges.columnsWithUniqueConstraintsToCreate.push(column.name);
118
+ alter = true;
119
+ }
120
+
121
+ if (
122
+ (!column.options?.references && foreignKeys[column.name]) ||
123
+ (column.options?.references &&
124
+ foreignKeys[column.name] &&
125
+ foreignKeys[column.name].referencedTableName != column.options.references.table)
126
+ ) {
127
+ // console.log(`column.options?.references`)
128
+ tableChanges.columnsWithForeignKeysToDrop.push(column.name);
129
+ tableChanges.foreignKeysToDrop.push({
130
+ table: foreignKeys[column.name].referencedTableName,
131
+ column: foreignKeys[column.name].referencedColumnName,
132
+ referencedByColumn: column.name,
133
+ });
134
+ alter = true;
135
+ } else if (column.options?.references && !foreignKeys[column.name]) {
136
+ tableChanges.columnsWithForeignKeysToCreate.push(column.name);
137
+ tableChanges.foreignKeysToCreate.push({
138
+ table: column.options.references.table,
139
+ column: 'id',
140
+ referencedByColumn: column.name,
141
+ });
142
+ alter = true;
143
+ }
144
+
145
+ if (alter) {
146
+ tableChanges.columnsToAlter.push(columnPropertyName);
147
+ }
148
+
149
+ continue;
150
+ }
151
+
152
+ if (column.oldName && columnMetadata[column.oldName]) {
153
+ tableChanges.columnsToRename.push(columnPropertyName);
154
+ continue;
155
+ }
156
+
157
+ tableChanges.columnsToCreate.push(columnPropertyName);
158
+ }
159
+
160
+ return tableChanges;
161
+ }
162
+
163
+ private async getIndexOperations(table: Table<any>) {
157
164
  const existingIndexes = await this.schemaMetadata.getIndexes(table);
158
165
  const indexesToDrop: {
159
- name?: string;
160
- columns: string|string[];
161
- unique?: boolean;
162
- }[] = [];
166
+ name?: string;
167
+ columns: string | string[];
168
+ unique?: boolean;
169
+ }[] = [];
163
170
  const indexesToCreate: {
164
- name?: string;
165
- columns: string|string[];
166
- unique?: boolean;
167
- }[] = [];
168
- const currentIndexMap: {[serializedColumns: string]: boolean} = {};
169
- const existingIndexMap: {[serializedColumns: string]: boolean} = {};
170
- for (const keyName in existingIndexes)
171
+ name?: string;
172
+ columns: string | string[];
173
+ unique?: boolean;
174
+ }[] = [];
175
+ const currentIndexMap: { [serializedColumns: string]: boolean } = {};
176
+ const existingIndexMap: { [serializedColumns: string]: boolean } = {};
177
+ for (const keyName in existingIndexes) {
171
178
  existingIndexMap[JSON.stringify(existingIndexes[keyName])] = true;
172
-
179
+ }
180
+
173
181
  if (table.indexes) {
174
182
  for (const index of table.indexes) {
175
183
  const serializedColumns = JSON.stringify(index.columns);
176
184
  currentIndexMap[serializedColumns] = true;
177
- if (!existingIndexMap[serializedColumns])
185
+ if (!existingIndexMap[serializedColumns]) {
178
186
  indexesToCreate.push({ name: index.name, columns: index.columns as string[] });
187
+ }
179
188
  }
180
189
  }
181
-
190
+
182
191
  for (const keyName in existingIndexes) {
183
192
  const existingIndex = existingIndexes[keyName];
184
193
  const serializedColumns = JSON.stringify(existingIndex);
185
194
  if (
186
- !currentIndexMap[serializedColumns] &&
187
- keyName != 'PRIMARY' &&
188
- keyName != 'PRIMARY_KEY' &&
189
- !keyName.endsWith('_unique') &&
190
- !keyName.endsWith('_foreign') &&
191
- !keyName.startsWith('IDX_')
192
- )
195
+ !currentIndexMap[serializedColumns] &&
196
+ keyName != 'PRIMARY' &&
197
+ keyName != 'PRIMARY_KEY' &&
198
+ !keyName.endsWith('_unique') &&
199
+ !keyName.endsWith('_foreign') &&
200
+ !keyName.startsWith('IDX_')
201
+ ) {
193
202
  indexesToDrop.push({ name: keyName, columns: existingIndex });
203
+ }
194
204
  }
195
-
205
+
196
206
  return { indexesToCreate, indexesToDrop };
197
207
  }
198
- }
208
+ }
@@ -2,12 +2,12 @@ import { ThirdPartyLibCustomSerializer } from '@proteinjs/serializer';
2
2
  import { graphSerializer, Graph, isInstanceOf } from '@proteinjs/util';
3
3
 
4
4
  type SerializedGraph = {
5
- value: string,
6
- }
5
+ value: string;
6
+ };
7
7
 
8
8
  export class GraphSerializer implements ThirdPartyLibCustomSerializer {
9
9
  id = '@proteinjs/serializer/GraphSerializer';
10
-
10
+
11
11
  matches(obj: any) {
12
12
  return isInstanceOf(obj, Graph);
13
13
  }
@@ -19,4 +19,4 @@ export class GraphSerializer implements ThirdPartyLibCustomSerializer {
19
19
  deserialize(serializedGraph: SerializedGraph): Graph {
20
20
  return graphSerializer.deserialize(serializedGraph.value);
21
21
  }
22
- }
22
+ }
@@ -3,21 +3,21 @@ import { Graph } from '@proteinjs/util';
3
3
  import { QueryBuilder } from '@proteinjs/db-query';
4
4
 
5
5
  type SerializedQueryBuilder = {
6
- tableName: string,
7
- graph: Graph,
8
- idCounter: number,
9
- rootId: string,
10
- currentContextIds: string[],
11
- paginationNodeId?: string,
12
- }
6
+ tableName: string;
7
+ graph: Graph;
8
+ idCounter: number;
9
+ rootId: string;
10
+ currentContextIds: string[];
11
+ paginationNodeId?: string;
12
+ };
13
13
 
14
14
  export const QueryBuilderSerializerId = '@proteinjs/db/QueryBuilderSerializer';
15
15
 
16
16
  export class QueryBuilderSerializer implements CustomSerializer {
17
17
  id = QueryBuilderSerializerId;
18
-
18
+
19
19
  serialize(qb: QueryBuilder<any>): SerializedQueryBuilder {
20
- return {
20
+ return {
21
21
  tableName: qb.tableName,
22
22
  graph: qb.graph,
23
23
  idCounter: qb.idCounter,
@@ -26,7 +26,7 @@ export class QueryBuilderSerializer implements CustomSerializer {
26
26
  paginationNodeId: qb.paginationNodeId,
27
27
  };
28
28
  }
29
-
29
+
30
30
  deserialize(serializedQb: SerializedQueryBuilder): QueryBuilder<any> {
31
31
  const qb = new QueryBuilder(serializedQb.tableName);
32
32
  qb.graph = serializedQb.graph;
@@ -36,4 +36,4 @@ export class QueryBuilderSerializer implements CustomSerializer {
36
36
  qb.paginationNodeId = serializedQb.paginationNodeId;
37
37
  return qb;
38
38
  }
39
- }
39
+ }
@@ -2,16 +2,16 @@ import { CustomSerializer } from '@proteinjs/serializer';
2
2
  import { ReferenceArray } from '../reference/ReferenceArray';
3
3
 
4
4
  type SerializedReferenceArray = {
5
- _table: string,
6
- _ids: string[],
7
- _objects: any,
8
- }
5
+ _table: string;
6
+ _ids: string[];
7
+ _objects: any;
8
+ };
9
9
 
10
10
  export const ReferenceArraySerializerId = '@proteinjs/db/ReferenceArraySerializer';
11
11
 
12
12
  export class ReferenceArraySerializer implements CustomSerializer {
13
13
  id = ReferenceArraySerializerId;
14
-
14
+
15
15
  serialize(referenceArray: ReferenceArray<any>): SerializedReferenceArray {
16
16
  return {
17
17
  _table: referenceArray._table,
@@ -19,8 +19,12 @@ export class ReferenceArraySerializer implements CustomSerializer {
19
19
  _objects: referenceArray._objects,
20
20
  };
21
21
  }
22
-
22
+
23
23
  deserialize(serializedReferenceArray: SerializedReferenceArray): ReferenceArray<any> {
24
- return new ReferenceArray(serializedReferenceArray._table, serializedReferenceArray._ids, serializedReferenceArray._objects);
24
+ return new ReferenceArray(
25
+ serializedReferenceArray._table,
26
+ serializedReferenceArray._ids,
27
+ serializedReferenceArray._objects
28
+ );
25
29
  }
26
- }
30
+ }
@@ -2,16 +2,16 @@ import { CustomSerializer } from '@proteinjs/serializer';
2
2
  import { Reference } from '../reference/Reference';
3
3
 
4
4
  type SerializedReference = {
5
- _table: string,
6
- _id?: string,
7
- _object?: any,
8
- }
5
+ _table: string;
6
+ _id?: string;
7
+ _object?: any;
8
+ };
9
9
 
10
10
  export const ReferenceSerializerId = '@proteinjs/db/ReferenceSerializer';
11
11
 
12
12
  export class ReferenceSerializer implements CustomSerializer {
13
13
  id = ReferenceSerializerId;
14
-
14
+
15
15
  serialize(reference: Reference<any>): SerializedReference {
16
16
  return {
17
17
  _table: reference._table,
@@ -19,8 +19,8 @@ export class ReferenceSerializer implements CustomSerializer {
19
19
  _object: reference._object,
20
20
  };
21
21
  }
22
-
22
+
23
23
  deserialize(serializedReference: SerializedReference): Reference<any> {
24
24
  return new Reference(serializedReference._table, serializedReference._id, serializedReference._object);
25
25
  }
26
- }
26
+ }
@@ -2,19 +2,19 @@ import { CustomSerializer } from '@proteinjs/serializer';
2
2
  import { Table, tableByName } from '../Table';
3
3
 
4
4
  type SerializedTable = {
5
- tableName: string,
6
- }
5
+ tableName: string;
6
+ };
7
7
 
8
8
  export const TableSerializerId = '@proteinjs/db/TableSerializer';
9
9
 
10
10
  export class TableSerializer implements CustomSerializer {
11
11
  id = TableSerializerId;
12
-
12
+
13
13
  serialize(table: Table<any>): SerializedTable {
14
14
  return { tableName: table.name };
15
15
  }
16
-
16
+
17
17
  deserialize(serializedTable: SerializedTable): Table<any> {
18
18
  return tableByName(serializedTable.tableName);
19
19
  }
20
- }
20
+ }
@@ -5,8 +5,8 @@ import { QueryBuilder } from '@proteinjs/db-query';
5
5
 
6
6
  export const getDbService = serviceFactory<DbService>('@proteinjs/db/DbService');
7
7
 
8
- export type Query<T> = ObjectQuery<T> | QueryBuilder<T>
9
- export type ObjectQuery<T> = Partial<{[P in keyof T]: any}>
8
+ export type Query<T> = ObjectQuery<T> | QueryBuilder<T>;
9
+ export type ObjectQuery<T> = Partial<{ [P in keyof T]: any }>;
10
10
 
11
11
  export interface DbService<R extends Record = Record> extends Service {
12
12
  tableExists<T extends R>(table: Table<T>): Promise<boolean>;
@@ -16,4 +16,4 @@ export interface DbService<R extends Record = Record> extends Service {
16
16
  delete<T extends R>(table: Table<T>, query: Query<T>): Promise<number>;
17
17
  query<T extends R>(table: Table<T>, query: Query<T>): Promise<T[]>;
18
18
  getRowCount<T extends R>(table: Table<T>, query?: Query<T>): Promise<number>;
19
- }
19
+ }
@@ -4,4 +4,4 @@ export const getMigrationRunnerService = serviceFactory<MigrationRunnerService>(
4
4
 
5
5
  export interface MigrationRunnerService extends Service {
6
6
  runMigration(id: string): Promise<void>;
7
- }
7
+ }