@strapi/database 5.51.1 → 5.52.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.
- package/dist/dialects/mysql/database-inspector.js +1 -1
- package/dist/dialects/mysql/database-inspector.js.map +1 -1
- package/dist/dialects/mysql/database-inspector.mjs +1 -1
- package/dist/dialects/mysql/database-inspector.mjs.map +1 -1
- package/dist/dialects/mysql/index.js +2 -2
- package/dist/dialects/mysql/index.js.map +1 -1
- package/dist/dialects/mysql/index.mjs +2 -2
- package/dist/dialects/mysql/index.mjs.map +1 -1
- package/dist/entity-manager/index.js +30 -30
- package/dist/entity-manager/index.js.map +1 -1
- package/dist/entity-manager/index.mjs +30 -30
- package/dist/entity-manager/index.mjs.map +1 -1
- package/dist/entity-manager/relations-orderer.js +1 -1
- package/dist/entity-manager/relations-orderer.js.map +1 -1
- package/dist/entity-manager/relations-orderer.mjs +1 -1
- package/dist/entity-manager/relations-orderer.mjs.map +1 -1
- package/dist/fields/datetime.d.ts.map +1 -1
- package/dist/fields/datetime.js +6 -23
- package/dist/fields/datetime.js.map +1 -1
- package/dist/fields/datetime.mjs +6 -3
- package/dist/fields/datetime.mjs.map +1 -1
- package/dist/fields/index.d.ts.map +1 -1
- package/dist/fields/index.js +21 -8
- package/dist/fields/index.js.map +1 -1
- package/dist/fields/index.mjs +21 -4
- package/dist/fields/index.mjs.map +1 -1
- package/dist/fields/json.js +1 -1
- package/dist/fields/json.js.map +1 -1
- package/dist/fields/json.mjs +1 -1
- package/dist/fields/json.mjs.map +1 -1
- package/dist/fields/shared/parsers.js +1 -1
- package/dist/fields/shared/parsers.js.map +1 -1
- package/dist/fields/shared/parsers.mjs +1 -1
- package/dist/fields/shared/parsers.mjs.map +1 -1
- package/dist/fields/timestamp.d.ts.map +1 -1
- package/dist/fields/timestamp.js +5 -23
- package/dist/fields/timestamp.js.map +1 -1
- package/dist/fields/timestamp.mjs +5 -3
- package/dist/fields/timestamp.mjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/migrations/common.d.ts +12 -2
- package/dist/migrations/common.d.ts.map +1 -1
- package/dist/migrations/common.js.map +1 -1
- package/dist/migrations/common.mjs.map +1 -1
- package/dist/migrations/discover.d.ts +8 -0
- package/dist/migrations/discover.d.ts.map +1 -0
- package/dist/migrations/discover.js +49 -0
- package/dist/migrations/discover.js.map +1 -0
- package/dist/migrations/discover.mjs +42 -0
- package/dist/migrations/discover.mjs.map +1 -0
- package/dist/migrations/internal-migrations/5.0.0-05-drop-slug-unique-index.js +1 -1
- package/dist/migrations/internal-migrations/5.0.0-05-drop-slug-unique-index.js.map +1 -1
- package/dist/migrations/internal-migrations/5.0.0-05-drop-slug-unique-index.mjs +1 -1
- package/dist/migrations/internal-migrations/5.0.0-05-drop-slug-unique-index.mjs.map +1 -1
- package/dist/migrations/internal.d.ts.map +1 -1
- package/dist/migrations/internal.js +21 -40
- package/dist/migrations/internal.js.map +1 -1
- package/dist/migrations/internal.mjs +21 -40
- package/dist/migrations/internal.mjs.map +1 -1
- package/dist/migrations/resolver.d.ts +9 -0
- package/dist/migrations/resolver.d.ts.map +1 -0
- package/dist/migrations/resolver.js +53 -0
- package/dist/migrations/resolver.js.map +1 -0
- package/dist/migrations/resolver.mjs +45 -0
- package/dist/migrations/resolver.mjs.map +1 -0
- package/dist/migrations/runner.d.ts +24 -0
- package/dist/migrations/runner.d.ts.map +1 -0
- package/dist/migrations/runner.js +92 -0
- package/dist/migrations/runner.js.map +1 -0
- package/dist/migrations/runner.mjs +90 -0
- package/dist/migrations/runner.mjs.map +1 -0
- package/dist/migrations/users.d.ts.map +1 -1
- package/dist/migrations/users.js +22 -68
- package/dist/migrations/users.js.map +1 -1
- package/dist/migrations/users.mjs +21 -68
- package/dist/migrations/users.mjs.map +1 -1
- package/dist/query/helpers/populate/apply.js +2 -2
- package/dist/query/helpers/populate/apply.js.map +1 -1
- package/dist/query/helpers/populate/apply.mjs +2 -2
- package/dist/query/helpers/populate/apply.mjs.map +1 -1
- package/dist/query/helpers/search.d.ts +1 -0
- package/dist/query/helpers/search.d.ts.map +1 -1
- package/dist/query/helpers/search.js +1 -0
- package/dist/query/helpers/search.js.map +1 -1
- package/dist/query/helpers/search.mjs +1 -1
- package/dist/query/helpers/search.mjs.map +1 -1
- package/dist/query/helpers/transform.d.ts.map +1 -1
- package/dist/query/helpers/transform.js +4 -1
- package/dist/query/helpers/transform.js.map +1 -1
- package/dist/query/helpers/transform.mjs +4 -1
- package/dist/query/helpers/transform.mjs.map +1 -1
- package/dist/query/helpers/where.d.ts.map +1 -1
- package/dist/query/helpers/where.js +34 -14
- package/dist/query/helpers/where.js.map +1 -1
- package/dist/query/helpers/where.mjs +34 -14
- package/dist/query/helpers/where.mjs.map +1 -1
- package/package.json +6 -7
|
@@ -15,7 +15,7 @@ class MysqlDatabaseInspector {
|
|
|
15
15
|
const databaseName = versionSplit[1];
|
|
16
16
|
versionNumber = versionSplit[0];
|
|
17
17
|
database = databaseName && databaseName.toLowerCase() === 'mariadb' ? constants.MARIADB : constants.MYSQL;
|
|
18
|
-
} catch
|
|
18
|
+
} catch {
|
|
19
19
|
return {
|
|
20
20
|
database: null,
|
|
21
21
|
version: null
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-inspector.js","sources":["../../../src/dialects/mysql/database-inspector.ts"],"sourcesContent":["import { MARIADB, MYSQL } from './constants';\nimport type { Database } from '../..';\n\nexport interface Information {\n database: typeof MARIADB | typeof MYSQL | null;\n version: string | null;\n}\n\nconst SQL_QUERIES = {\n VERSION: `SELECT version() as version`,\n};\n\nexport default class MysqlDatabaseInspector {\n db: Database;\n\n constructor(db: Database) {\n this.db = db;\n }\n\n async getInformation(nativeConnection?: unknown): Promise<Information> {\n let database: Information['database'];\n let versionNumber: Information['version'];\n try {\n const [results] = await this.db.connection\n .raw(SQL_QUERIES.VERSION)\n .connection(nativeConnection);\n const versionSplit = results[0].version.split('-');\n const databaseName = versionSplit[1];\n versionNumber = versionSplit[0];\n database = databaseName && databaseName.toLowerCase() === 'mariadb' ? MARIADB : MYSQL;\n } catch
|
|
1
|
+
{"version":3,"file":"database-inspector.js","sources":["../../../src/dialects/mysql/database-inspector.ts"],"sourcesContent":["import { MARIADB, MYSQL } from './constants';\nimport type { Database } from '../..';\n\nexport interface Information {\n database: typeof MARIADB | typeof MYSQL | null;\n version: string | null;\n}\n\nconst SQL_QUERIES = {\n VERSION: `SELECT version() as version`,\n};\n\nexport default class MysqlDatabaseInspector {\n db: Database;\n\n constructor(db: Database) {\n this.db = db;\n }\n\n async getInformation(nativeConnection?: unknown): Promise<Information> {\n let database: Information['database'];\n let versionNumber: Information['version'];\n try {\n const [results] = await this.db.connection\n .raw(SQL_QUERIES.VERSION)\n .connection(nativeConnection);\n const versionSplit = results[0].version.split('-');\n const databaseName = versionSplit[1];\n versionNumber = versionSplit[0];\n database = databaseName && databaseName.toLowerCase() === 'mariadb' ? MARIADB : MYSQL;\n } catch {\n return {\n database: null,\n version: null,\n };\n }\n\n return {\n database,\n version: versionNumber,\n };\n }\n}\n"],"names":["SQL_QUERIES","VERSION","MysqlDatabaseInspector","getInformation","nativeConnection","database","versionNumber","results","db","connection","raw","versionSplit","version","split","databaseName","toLowerCase","MARIADB","MYSQL"],"mappings":";;;;AAQA,MAAMA,WAAAA,GAAc;IAClBC,OAAAA,EAAS,CAAC,2BAA2B;AACvC,CAAA;AAEe,MAAMC,sBAAAA,CAAAA;IAOnB,MAAMC,cAAAA,CAAeC,gBAA0B,EAAwB;QACrE,IAAIC,QAAAA;QACJ,IAAIC,aAAAA;QACJ,IAAI;AACF,YAAA,MAAM,CAACC,OAAAA,CAAQ,GAAG,MAAM,IAAI,CAACC,EAAE,CAACC,UAAU,CACvCC,GAAG,CAACV,WAAAA,CAAYC,OAAO,CAAA,CACvBQ,UAAU,CAACL,gBAAAA,CAAAA;YACd,MAAMO,YAAAA,GAAeJ,OAAO,CAAC,CAAA,CAAE,CAACK,OAAO,CAACC,KAAK,CAAC,GAAA,CAAA;YAC9C,MAAMC,YAAAA,GAAeH,YAAY,CAAC,CAAA,CAAE;YACpCL,aAAAA,GAAgBK,YAAY,CAAC,CAAA,CAAE;AAC/BN,YAAAA,QAAAA,GAAWS,YAAAA,IAAgBA,YAAAA,CAAaC,WAAW,EAAA,KAAO,YAAYC,iBAAAA,GAAUC,eAAAA;AAClF,QAAA,CAAA,CAAE,OAAM;YACN,OAAO;gBACLZ,QAAAA,EAAU,IAAA;gBACVO,OAAAA,EAAS;AACX,aAAA;AACF,QAAA;QAEA,OAAO;AACLP,YAAAA,QAAAA;YACAO,OAAAA,EAASN;AACX,SAAA;AACF,IAAA;AA1BA,IAAA,WAAA,CAAYE,EAAY,CAAE;QACxB,IAAI,CAACA,EAAE,GAAGA,EAAAA;AACZ,IAAA;AAyBF;;;;"}
|
|
@@ -13,7 +13,7 @@ class MysqlDatabaseInspector {
|
|
|
13
13
|
const databaseName = versionSplit[1];
|
|
14
14
|
versionNumber = versionSplit[0];
|
|
15
15
|
database = databaseName && databaseName.toLowerCase() === 'mariadb' ? MARIADB : MYSQL;
|
|
16
|
-
} catch
|
|
16
|
+
} catch {
|
|
17
17
|
return {
|
|
18
18
|
database: null,
|
|
19
19
|
version: null
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-inspector.mjs","sources":["../../../src/dialects/mysql/database-inspector.ts"],"sourcesContent":["import { MARIADB, MYSQL } from './constants';\nimport type { Database } from '../..';\n\nexport interface Information {\n database: typeof MARIADB | typeof MYSQL | null;\n version: string | null;\n}\n\nconst SQL_QUERIES = {\n VERSION: `SELECT version() as version`,\n};\n\nexport default class MysqlDatabaseInspector {\n db: Database;\n\n constructor(db: Database) {\n this.db = db;\n }\n\n async getInformation(nativeConnection?: unknown): Promise<Information> {\n let database: Information['database'];\n let versionNumber: Information['version'];\n try {\n const [results] = await this.db.connection\n .raw(SQL_QUERIES.VERSION)\n .connection(nativeConnection);\n const versionSplit = results[0].version.split('-');\n const databaseName = versionSplit[1];\n versionNumber = versionSplit[0];\n database = databaseName && databaseName.toLowerCase() === 'mariadb' ? MARIADB : MYSQL;\n } catch
|
|
1
|
+
{"version":3,"file":"database-inspector.mjs","sources":["../../../src/dialects/mysql/database-inspector.ts"],"sourcesContent":["import { MARIADB, MYSQL } from './constants';\nimport type { Database } from '../..';\n\nexport interface Information {\n database: typeof MARIADB | typeof MYSQL | null;\n version: string | null;\n}\n\nconst SQL_QUERIES = {\n VERSION: `SELECT version() as version`,\n};\n\nexport default class MysqlDatabaseInspector {\n db: Database;\n\n constructor(db: Database) {\n this.db = db;\n }\n\n async getInformation(nativeConnection?: unknown): Promise<Information> {\n let database: Information['database'];\n let versionNumber: Information['version'];\n try {\n const [results] = await this.db.connection\n .raw(SQL_QUERIES.VERSION)\n .connection(nativeConnection);\n const versionSplit = results[0].version.split('-');\n const databaseName = versionSplit[1];\n versionNumber = versionSplit[0];\n database = databaseName && databaseName.toLowerCase() === 'mariadb' ? MARIADB : MYSQL;\n } catch {\n return {\n database: null,\n version: null,\n };\n }\n\n return {\n database,\n version: versionNumber,\n };\n }\n}\n"],"names":["SQL_QUERIES","VERSION","MysqlDatabaseInspector","getInformation","nativeConnection","database","versionNumber","results","db","connection","raw","versionSplit","version","split","databaseName","toLowerCase","MARIADB","MYSQL"],"mappings":";;AAQA,MAAMA,WAAAA,GAAc;IAClBC,OAAAA,EAAS,CAAC,2BAA2B;AACvC,CAAA;AAEe,MAAMC,sBAAAA,CAAAA;IAOnB,MAAMC,cAAAA,CAAeC,gBAA0B,EAAwB;QACrE,IAAIC,QAAAA;QACJ,IAAIC,aAAAA;QACJ,IAAI;AACF,YAAA,MAAM,CAACC,OAAAA,CAAQ,GAAG,MAAM,IAAI,CAACC,EAAE,CAACC,UAAU,CACvCC,GAAG,CAACV,WAAAA,CAAYC,OAAO,CAAA,CACvBQ,UAAU,CAACL,gBAAAA,CAAAA;YACd,MAAMO,YAAAA,GAAeJ,OAAO,CAAC,CAAA,CAAE,CAACK,OAAO,CAACC,KAAK,CAAC,GAAA,CAAA;YAC9C,MAAMC,YAAAA,GAAeH,YAAY,CAAC,CAAA,CAAE;YACpCL,aAAAA,GAAgBK,YAAY,CAAC,CAAA,CAAE;AAC/BN,YAAAA,QAAAA,GAAWS,YAAAA,IAAgBA,YAAAA,CAAaC,WAAW,EAAA,KAAO,YAAYC,OAAAA,GAAUC,KAAAA;AAClF,QAAA,CAAA,CAAE,OAAM;YACN,OAAO;gBACLZ,QAAAA,EAAU,IAAA;gBACVO,OAAAA,EAAS;AACX,aAAA;AACF,QAAA;QAEA,OAAO;AACLP,YAAAA,QAAAA;YACAO,OAAAA,EAASN;AACX,SAAA;AACF,IAAA;AA1BA,IAAA,WAAA,CAAYE,EAAY,CAAE;QACxB,IAAI,CAACA,EAAE,GAAGA,EAAAA;AACZ,IAAA;AAyBF;;;;"}
|
|
@@ -31,7 +31,7 @@ class MysqlDialect extends dialect {
|
|
|
31
31
|
async initialize(nativeConnection) {
|
|
32
32
|
try {
|
|
33
33
|
await this.db.connection.raw(`set session sql_require_primary_key = 0;`).connection(nativeConnection);
|
|
34
|
-
} catch
|
|
34
|
+
} catch {
|
|
35
35
|
// Ignore error due to lack of session permissions
|
|
36
36
|
}
|
|
37
37
|
// We only need to get info on the first connection in the pool
|
|
@@ -47,7 +47,7 @@ class MysqlDialect extends dialect {
|
|
|
47
47
|
try {
|
|
48
48
|
await this.db.connection.raw(`set foreign_key_checks = 0;`);
|
|
49
49
|
await this.db.connection.raw(`set session sql_require_primary_key = 0;`);
|
|
50
|
-
} catch
|
|
50
|
+
} catch {
|
|
51
51
|
// Ignore error due to lack of session permissions
|
|
52
52
|
}
|
|
53
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/dialects/mysql/index.ts"],"sourcesContent":["import type { Knex } from 'knex';\n\nimport Dialect from '../dialect';\nimport MysqlSchemaInspector from './schema-inspector';\nimport MysqlDatabaseInspector from './database-inspector';\nimport type { Database } from '../..';\n\nimport type { Information } from './database-inspector';\n\nexport default class MysqlDialect extends Dialect {\n schemaInspector: MysqlSchemaInspector;\n\n databaseInspector: MysqlDatabaseInspector;\n\n info: Information | null = null;\n\n constructor(db: Database) {\n super(db, 'mysql');\n\n this.schemaInspector = new MysqlSchemaInspector(db);\n this.databaseInspector = new MysqlDatabaseInspector(db);\n }\n\n configure(conn?: Knex.MySqlConnectionConfig) {\n const connection = conn || (this.db.config.connection.connection as Knex.MySqlConnectionConfig);\n\n connection.supportBigNumbers = true;\n // Only allow bigNumberStrings option set to be true if no connection option passed\n // Otherwise bigNumberStrings option should be allowed to used from DB config\n if (connection.bigNumberStrings === undefined) {\n connection.bigNumberStrings = true;\n }\n connection.typeCast = (\n field: { type: string; string: () => string; length: number },\n next: () => void\n ) => {\n if (field.type === 'DECIMAL' || field.type === 'NEWDECIMAL') {\n const value = field.string();\n return value === null ? null : Number(value);\n }\n\n if (field.type === 'TINY' && field.length === 1) {\n const value = field.string();\n return value ? value === '1' : null;\n }\n\n if (field.type === 'DATE') {\n return field.string();\n }\n\n return next();\n };\n }\n\n async initialize(nativeConnection: unknown) {\n try {\n await this.db.connection\n .raw(`set session sql_require_primary_key = 0;`)\n .connection(nativeConnection);\n } catch
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/dialects/mysql/index.ts"],"sourcesContent":["import type { Knex } from 'knex';\n\nimport Dialect from '../dialect';\nimport MysqlSchemaInspector from './schema-inspector';\nimport MysqlDatabaseInspector from './database-inspector';\nimport type { Database } from '../..';\n\nimport type { Information } from './database-inspector';\n\nexport default class MysqlDialect extends Dialect {\n schemaInspector: MysqlSchemaInspector;\n\n databaseInspector: MysqlDatabaseInspector;\n\n info: Information | null = null;\n\n constructor(db: Database) {\n super(db, 'mysql');\n\n this.schemaInspector = new MysqlSchemaInspector(db);\n this.databaseInspector = new MysqlDatabaseInspector(db);\n }\n\n configure(conn?: Knex.MySqlConnectionConfig) {\n const connection = conn || (this.db.config.connection.connection as Knex.MySqlConnectionConfig);\n\n connection.supportBigNumbers = true;\n // Only allow bigNumberStrings option set to be true if no connection option passed\n // Otherwise bigNumberStrings option should be allowed to used from DB config\n if (connection.bigNumberStrings === undefined) {\n connection.bigNumberStrings = true;\n }\n connection.typeCast = (\n field: { type: string; string: () => string; length: number },\n next: () => void\n ) => {\n if (field.type === 'DECIMAL' || field.type === 'NEWDECIMAL') {\n const value = field.string();\n return value === null ? null : Number(value);\n }\n\n if (field.type === 'TINY' && field.length === 1) {\n const value = field.string();\n return value ? value === '1' : null;\n }\n\n if (field.type === 'DATE') {\n return field.string();\n }\n\n return next();\n };\n }\n\n async initialize(nativeConnection: unknown) {\n try {\n await this.db.connection\n .raw(`set session sql_require_primary_key = 0;`)\n .connection(nativeConnection);\n } catch {\n // Ignore error due to lack of session permissions\n }\n\n // We only need to get info on the first connection in the pool\n /**\n * Note: There is a race condition here where if two connections are opened at the same time, both will retrieve\n * db info, but it doesn't cause issues, it's just one wasted query one time, so we can safely leave it to avoid\n * adding extra complexity\n * */\n if (!this.info) {\n this.info = await this.databaseInspector.getInformation(nativeConnection);\n }\n }\n\n async startSchemaUpdate() {\n try {\n await this.db.connection.raw(`set foreign_key_checks = 0;`);\n await this.db.connection.raw(`set session sql_require_primary_key = 0;`);\n } catch {\n // Ignore error due to lack of session permissions\n }\n }\n\n async endSchemaUpdate() {\n await this.db.connection.raw(`set foreign_key_checks = 1;`);\n }\n\n supportsUnsigned() {\n return true;\n }\n\n usesForeignKeys() {\n return true;\n }\n\n transformErrors(error: Error) {\n super.transformErrors(error);\n }\n}\n"],"names":["MysqlDialect","Dialect","configure","conn","connection","db","config","supportBigNumbers","bigNumberStrings","undefined","typeCast","field","next","type","value","string","Number","length","initialize","nativeConnection","raw","info","databaseInspector","getInformation","startSchemaUpdate","endSchemaUpdate","supportsUnsigned","usesForeignKeys","transformErrors","error","schemaInspector","MysqlSchemaInspector","MysqlDatabaseInspector"],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ class MysqlDialect extends Dialect {
|
|
|
29
29
|
async initialize(nativeConnection) {
|
|
30
30
|
try {
|
|
31
31
|
await this.db.connection.raw(`set session sql_require_primary_key = 0;`).connection(nativeConnection);
|
|
32
|
-
} catch
|
|
32
|
+
} catch {
|
|
33
33
|
// Ignore error due to lack of session permissions
|
|
34
34
|
}
|
|
35
35
|
// We only need to get info on the first connection in the pool
|
|
@@ -45,7 +45,7 @@ class MysqlDialect extends Dialect {
|
|
|
45
45
|
try {
|
|
46
46
|
await this.db.connection.raw(`set foreign_key_checks = 0;`);
|
|
47
47
|
await this.db.connection.raw(`set session sql_require_primary_key = 0;`);
|
|
48
|
-
} catch
|
|
48
|
+
} catch {
|
|
49
49
|
// Ignore error due to lack of session permissions
|
|
50
50
|
}
|
|
51
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/dialects/mysql/index.ts"],"sourcesContent":["import type { Knex } from 'knex';\n\nimport Dialect from '../dialect';\nimport MysqlSchemaInspector from './schema-inspector';\nimport MysqlDatabaseInspector from './database-inspector';\nimport type { Database } from '../..';\n\nimport type { Information } from './database-inspector';\n\nexport default class MysqlDialect extends Dialect {\n schemaInspector: MysqlSchemaInspector;\n\n databaseInspector: MysqlDatabaseInspector;\n\n info: Information | null = null;\n\n constructor(db: Database) {\n super(db, 'mysql');\n\n this.schemaInspector = new MysqlSchemaInspector(db);\n this.databaseInspector = new MysqlDatabaseInspector(db);\n }\n\n configure(conn?: Knex.MySqlConnectionConfig) {\n const connection = conn || (this.db.config.connection.connection as Knex.MySqlConnectionConfig);\n\n connection.supportBigNumbers = true;\n // Only allow bigNumberStrings option set to be true if no connection option passed\n // Otherwise bigNumberStrings option should be allowed to used from DB config\n if (connection.bigNumberStrings === undefined) {\n connection.bigNumberStrings = true;\n }\n connection.typeCast = (\n field: { type: string; string: () => string; length: number },\n next: () => void\n ) => {\n if (field.type === 'DECIMAL' || field.type === 'NEWDECIMAL') {\n const value = field.string();\n return value === null ? null : Number(value);\n }\n\n if (field.type === 'TINY' && field.length === 1) {\n const value = field.string();\n return value ? value === '1' : null;\n }\n\n if (field.type === 'DATE') {\n return field.string();\n }\n\n return next();\n };\n }\n\n async initialize(nativeConnection: unknown) {\n try {\n await this.db.connection\n .raw(`set session sql_require_primary_key = 0;`)\n .connection(nativeConnection);\n } catch
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/dialects/mysql/index.ts"],"sourcesContent":["import type { Knex } from 'knex';\n\nimport Dialect from '../dialect';\nimport MysqlSchemaInspector from './schema-inspector';\nimport MysqlDatabaseInspector from './database-inspector';\nimport type { Database } from '../..';\n\nimport type { Information } from './database-inspector';\n\nexport default class MysqlDialect extends Dialect {\n schemaInspector: MysqlSchemaInspector;\n\n databaseInspector: MysqlDatabaseInspector;\n\n info: Information | null = null;\n\n constructor(db: Database) {\n super(db, 'mysql');\n\n this.schemaInspector = new MysqlSchemaInspector(db);\n this.databaseInspector = new MysqlDatabaseInspector(db);\n }\n\n configure(conn?: Knex.MySqlConnectionConfig) {\n const connection = conn || (this.db.config.connection.connection as Knex.MySqlConnectionConfig);\n\n connection.supportBigNumbers = true;\n // Only allow bigNumberStrings option set to be true if no connection option passed\n // Otherwise bigNumberStrings option should be allowed to used from DB config\n if (connection.bigNumberStrings === undefined) {\n connection.bigNumberStrings = true;\n }\n connection.typeCast = (\n field: { type: string; string: () => string; length: number },\n next: () => void\n ) => {\n if (field.type === 'DECIMAL' || field.type === 'NEWDECIMAL') {\n const value = field.string();\n return value === null ? null : Number(value);\n }\n\n if (field.type === 'TINY' && field.length === 1) {\n const value = field.string();\n return value ? value === '1' : null;\n }\n\n if (field.type === 'DATE') {\n return field.string();\n }\n\n return next();\n };\n }\n\n async initialize(nativeConnection: unknown) {\n try {\n await this.db.connection\n .raw(`set session sql_require_primary_key = 0;`)\n .connection(nativeConnection);\n } catch {\n // Ignore error due to lack of session permissions\n }\n\n // We only need to get info on the first connection in the pool\n /**\n * Note: There is a race condition here where if two connections are opened at the same time, both will retrieve\n * db info, but it doesn't cause issues, it's just one wasted query one time, so we can safely leave it to avoid\n * adding extra complexity\n * */\n if (!this.info) {\n this.info = await this.databaseInspector.getInformation(nativeConnection);\n }\n }\n\n async startSchemaUpdate() {\n try {\n await this.db.connection.raw(`set foreign_key_checks = 0;`);\n await this.db.connection.raw(`set session sql_require_primary_key = 0;`);\n } catch {\n // Ignore error due to lack of session permissions\n }\n }\n\n async endSchemaUpdate() {\n await this.db.connection.raw(`set foreign_key_checks = 1;`);\n }\n\n supportsUnsigned() {\n return true;\n }\n\n usesForeignKeys() {\n return true;\n }\n\n transformErrors(error: Error) {\n super.transformErrors(error);\n }\n}\n"],"names":["MysqlDialect","Dialect","configure","conn","connection","db","config","supportBigNumbers","bigNumberStrings","undefined","typeCast","field","next","type","value","string","Number","length","initialize","nativeConnection","raw","info","databaseInspector","getInformation","startSchemaUpdate","endSchemaUpdate","supportsUnsigned","usesForeignKeys","transformErrors","error","schemaInspector","MysqlSchemaInspector","MysqlDatabaseInspector"],"mappings":"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"}
|
|
@@ -464,8 +464,8 @@ const createEntityManager = (db)=>{
|
|
|
464
464
|
[joinColumn.name]: data.id,
|
|
465
465
|
[idColumn.name]: id,
|
|
466
466
|
[typeColumn.name]: uid,
|
|
467
|
-
...'on' in joinTable && joinTable.on
|
|
468
|
-
...data.__pivot
|
|
467
|
+
...'on' in joinTable && joinTable.on,
|
|
468
|
+
...data.__pivot,
|
|
469
469
|
order: idx + 1,
|
|
470
470
|
field: attributeName
|
|
471
471
|
};
|
|
@@ -490,8 +490,8 @@ const createEntityManager = (db)=>{
|
|
|
490
490
|
[joinColumn.name]: id,
|
|
491
491
|
[idColumn.name]: data.id,
|
|
492
492
|
[typeColumn.name]: data[typeField],
|
|
493
|
-
...'on' in joinTable && joinTable.on
|
|
494
|
-
...data.__pivot
|
|
493
|
+
...'on' in joinTable && joinTable.on,
|
|
494
|
+
...data.__pivot,
|
|
495
495
|
order: idx + 1
|
|
496
496
|
}));
|
|
497
497
|
const orderMap = relationsOrderer.relationsOrderer([], morphColumn.idColumn.name, 'order', true // Always make a strict connect when inserting
|
|
@@ -573,8 +573,8 @@ const createEntityManager = (db)=>{
|
|
|
573
573
|
return {
|
|
574
574
|
[joinColumn.name]: id,
|
|
575
575
|
[inverseJoinColumn.name]: data.id,
|
|
576
|
-
...'on' in joinTable && joinTable.on
|
|
577
|
-
...data.__pivot
|
|
576
|
+
...'on' in joinTable && joinTable.on,
|
|
577
|
+
...data.__pivot
|
|
578
578
|
};
|
|
579
579
|
});
|
|
580
580
|
// add order value
|
|
@@ -671,7 +671,7 @@ const createEntityManager = (db)=>{
|
|
|
671
671
|
[idColumn.name]: id,
|
|
672
672
|
[typeColumn.name]: uid,
|
|
673
673
|
[joinColumn.name]: item.id,
|
|
674
|
-
...joinTable.on
|
|
674
|
+
...joinTable.on,
|
|
675
675
|
field: attributeName
|
|
676
676
|
};
|
|
677
677
|
})
|
|
@@ -684,16 +684,16 @@ const createEntityManager = (db)=>{
|
|
|
684
684
|
const start = await this.createQueryBuilder(joinTable.name).where({
|
|
685
685
|
[idColumn.name]: id,
|
|
686
686
|
[typeColumn.name]: uid,
|
|
687
|
-
...joinTable.on
|
|
688
|
-
...data.__pivot
|
|
687
|
+
...joinTable.on,
|
|
688
|
+
...data.__pivot
|
|
689
689
|
}).max('order').first().transacting(trx).execute();
|
|
690
690
|
const startOrder = start?.max || 0;
|
|
691
691
|
const rows = (cleanRelationData.connect ?? []).map((data, idx)=>({
|
|
692
692
|
[joinColumn.name]: data.id,
|
|
693
693
|
[idColumn.name]: id,
|
|
694
694
|
[typeColumn.name]: uid,
|
|
695
|
-
...joinTable.on
|
|
696
|
-
...data.__pivot
|
|
695
|
+
...joinTable.on,
|
|
696
|
+
...data.__pivot,
|
|
697
697
|
order: startOrder + idx + 1,
|
|
698
698
|
field: attributeName
|
|
699
699
|
}));
|
|
@@ -705,7 +705,7 @@ const createEntityManager = (db)=>{
|
|
|
705
705
|
await this.createQueryBuilder(joinTable.name).delete().where({
|
|
706
706
|
[idColumn.name]: id,
|
|
707
707
|
[typeColumn.name]: uid,
|
|
708
|
-
...joinTable.on
|
|
708
|
+
...joinTable.on,
|
|
709
709
|
field: attributeName
|
|
710
710
|
}).transacting(trx).execute();
|
|
711
711
|
if (hasSet) {
|
|
@@ -713,8 +713,8 @@ const createEntityManager = (db)=>{
|
|
|
713
713
|
[joinColumn.name]: data.id,
|
|
714
714
|
[idColumn.name]: id,
|
|
715
715
|
[typeColumn.name]: uid,
|
|
716
|
-
...joinTable.on
|
|
717
|
-
...data.__pivot
|
|
716
|
+
...joinTable.on,
|
|
717
|
+
...data.__pivot,
|
|
718
718
|
order: idx + 1,
|
|
719
719
|
field: attributeName
|
|
720
720
|
}));
|
|
@@ -745,8 +745,8 @@ const createEntityManager = (db)=>{
|
|
|
745
745
|
[joinColumn.name]: id,
|
|
746
746
|
[idColumn.name]: data.id,
|
|
747
747
|
[typeColumn.name]: data[typeField],
|
|
748
|
-
...'on' in joinTable && joinTable.on
|
|
749
|
-
...data.__pivot
|
|
748
|
+
...'on' in joinTable && joinTable.on,
|
|
749
|
+
...data.__pivot,
|
|
750
750
|
order: idx + 1
|
|
751
751
|
})),
|
|
752
752
|
...(cleanRelationData.connect ?? []).map((data, idx)=>({
|
|
@@ -754,8 +754,8 @@ const createEntityManager = (db)=>{
|
|
|
754
754
|
[idColumn.name]: data.id,
|
|
755
755
|
// @ts-expect-error TODO
|
|
756
756
|
[typeColumn.name]: data[typeField],
|
|
757
|
-
...'on' in joinTable && joinTable.on
|
|
758
|
-
...data.__pivot
|
|
757
|
+
...'on' in joinTable && joinTable.on,
|
|
758
|
+
...data.__pivot,
|
|
759
759
|
order: idx + 1
|
|
760
760
|
}))
|
|
761
761
|
];
|
|
@@ -788,7 +788,7 @@ const createEntityManager = (db)=>{
|
|
|
788
788
|
[idColumn.name]: item.id,
|
|
789
789
|
[typeColumn.name]: item[typeField],
|
|
790
790
|
[joinColumn.name]: id,
|
|
791
|
-
...joinTable.on
|
|
791
|
+
...joinTable.on
|
|
792
792
|
};
|
|
793
793
|
})
|
|
794
794
|
};
|
|
@@ -809,8 +809,8 @@ const createEntityManager = (db)=>{
|
|
|
809
809
|
[joinColumn.name]: id,
|
|
810
810
|
[idColumn.name]: data.id,
|
|
811
811
|
[typeColumn.name]: data[typeField],
|
|
812
|
-
...joinTable.on
|
|
813
|
-
...data.__pivot
|
|
812
|
+
...joinTable.on,
|
|
813
|
+
...data.__pivot,
|
|
814
814
|
field: attributeName
|
|
815
815
|
}));
|
|
816
816
|
const orderMap = relationsOrderer.relationsOrderer(// Merge id & __type to get a single id key
|
|
@@ -836,15 +836,15 @@ const createEntityManager = (db)=>{
|
|
|
836
836
|
// delete all relations for this entity
|
|
837
837
|
await this.createQueryBuilder(joinTable.name).delete().where({
|
|
838
838
|
[joinColumn.name]: id,
|
|
839
|
-
...joinTable.on
|
|
839
|
+
...joinTable.on
|
|
840
840
|
}).transacting(trx).execute();
|
|
841
841
|
const rows = (cleanRelationData.set ?? []).map((data, idx)=>({
|
|
842
842
|
[joinColumn.name]: id,
|
|
843
843
|
[idColumn.name]: data.id,
|
|
844
844
|
[typeColumn.name]: data[typeField],
|
|
845
845
|
field: attributeName,
|
|
846
|
-
...joinTable.on
|
|
847
|
-
...data.__pivot
|
|
846
|
+
...joinTable.on,
|
|
847
|
+
...data.__pivot,
|
|
848
848
|
order: idx + 1
|
|
849
849
|
}));
|
|
850
850
|
await morphRelations.deleteRelatedMorphOneRelationsAfterMorphToManyUpdate(rows, {
|
|
@@ -1054,8 +1054,8 @@ const createEntityManager = (db)=>{
|
|
|
1054
1054
|
const insert = _.uniqBy('id', cleanRelationData.connect).map((relToAdd)=>({
|
|
1055
1055
|
[joinColumn.name]: id,
|
|
1056
1056
|
[inverseJoinColumn.name]: relToAdd.id,
|
|
1057
|
-
...joinTable.on
|
|
1058
|
-
...relToAdd.__pivot
|
|
1057
|
+
...joinTable.on,
|
|
1058
|
+
...relToAdd.__pivot
|
|
1059
1059
|
}));
|
|
1060
1060
|
if (relations.hasOrderColumn(attribute)) {
|
|
1061
1061
|
// Get all adjacent relations and the one with the highest order
|
|
@@ -1136,8 +1136,8 @@ const createEntityManager = (db)=>{
|
|
|
1136
1136
|
const insert = _.uniqBy('id', cleanRelationData.set).map((relToAdd)=>({
|
|
1137
1137
|
[joinColumn.name]: id,
|
|
1138
1138
|
[inverseJoinColumn.name]: relToAdd.id,
|
|
1139
|
-
...joinTable.on
|
|
1140
|
-
...relToAdd.__pivot
|
|
1139
|
+
...joinTable.on,
|
|
1140
|
+
...relToAdd.__pivot
|
|
1141
1141
|
}));
|
|
1142
1142
|
// add order value
|
|
1143
1143
|
if (relations.hasOrderColumn(attribute)) {
|
|
@@ -1240,7 +1240,7 @@ const createEntityManager = (db)=>{
|
|
|
1240
1240
|
await this.createQueryBuilder(joinTable.name).delete().where({
|
|
1241
1241
|
[idColumn.name]: id,
|
|
1242
1242
|
[typeColumn.name]: uid,
|
|
1243
|
-
...joinTable.on
|
|
1243
|
+
...joinTable.on,
|
|
1244
1244
|
field: attributeName
|
|
1245
1245
|
}).transacting(trx).execute();
|
|
1246
1246
|
}
|
|
@@ -1258,7 +1258,7 @@ const createEntityManager = (db)=>{
|
|
|
1258
1258
|
const { joinColumn } = joinTable;
|
|
1259
1259
|
await this.createQueryBuilder(joinTable.name).delete().where({
|
|
1260
1260
|
[joinColumn.name]: id,
|
|
1261
|
-
...joinTable.on
|
|
1261
|
+
...joinTable.on
|
|
1262
1262
|
}).transacting(trx).execute();
|
|
1263
1263
|
continue;
|
|
1264
1264
|
}
|