{"version":3,"sources":["../browser/src/driver/nativescript/NativescriptDriver.ts"],"names":[],"mappings":"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","file":"NativescriptDriver.js","sourcesContent":["import {AbstractSqliteDriver} from \"../sqlite-abstract/AbstractSqliteDriver\";\nimport {NativescriptConnectionOptions} from \"./NativescriptConnectionOptions\";\nimport {NativescriptQueryRunner} from \"./NativescriptQueryRunner\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\nimport {Connection} from \"../../connection/Connection\";\nimport {DriverOptionNotSetError} from \"../../error/DriverOptionNotSetError\";\nimport {DriverPackageNotInstalledError} from \"../../error/DriverPackageNotInstalledError\";\nimport {ColumnType} from \"../types/ColumnTypes\";\n\n/**\n * Organizes communication with sqlite DBMS within Nativescript.\n */\nexport class NativescriptDriver extends AbstractSqliteDriver {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection options.\n */\n options: NativescriptConnectionOptions;\n\n /**\n * Nativescript driver module\n * this is most likely `nativescript-sqlite`\n * but user can pass his own\n */\n driver: any;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: Connection) {\n super(connection);\n\n this.connection = connection;\n this.options = connection.options as NativescriptConnectionOptions;\n this.database = this.options.database;\n this.driver = this.options.driver;\n\n // validate options to make sure everything is set\n if (!this.options.database) {\n throw new DriverOptionNotSetError(\"database\");\n }\n\n // load sqlite package\n this.loadDependencies();\n }\n\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Closes connection with database.\n */\n async disconnect(): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.queryRunner = undefined;\n this.databaseConnection.close().then(ok).catch(fail);\n });\n }\n\n /**\n * Creates a query runner used to execute database queries.\n */\n createQueryRunner(mode: \"master\"|\"slave\" = \"master\"): QueryRunner {\n if (!this.queryRunner) {\n this.queryRunner = new NativescriptQueryRunner(this);\n }\n\n return this.queryRunner;\n }\n\n normalizeType(column: { type?: ColumnType, length?: number | string, precision?: number|null, scale?: number }): string {\n if ((column.type as any) === Buffer) {\n return \"blob\";\n }\n\n return super.normalizeType(column);\n }\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates connection with the database.\n */\n protected createDatabaseConnection() {\n return new Promise<void>((ok, fail) => {\n const options = Object.assign({}, {\n name: this.options.database,\n }, this.options.extra || {});\n\n new this.sqlite(options.name, (err: Error, db: any): any => {\n if (err) return fail(err);\n\n // use object mode to work with TypeORM\n db.resultType(this.sqlite.RESULTSASOBJECT);\n\n\n // we need to enable foreign keys in sqlite to make sure all foreign key related features\n // working properly. this also makes onDelete work with sqlite.\n db.execSQL(`PRAGMA foreign_keys = ON;`, [], (err: Error, result: any): any => {\n if (err) return fail(err);\n // We are all set\n ok(db);\n });\n });\n });\n }\n\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n protected loadDependencies(): void {\n this.sqlite = this.driver;\n if (!this.driver) {\n throw new DriverPackageNotInstalledError(\"Nativescript\", \"nativescript-sqlite\");\n }\n }\n}\n"],"sourceRoot":"../.."}
|