oak-db 3.3.14 → 4.0.1

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/README.md CHANGED
@@ -1,3 +1,7 @@
1
1
  # oak-db
2
2
 
3
- oak-db
3
+ oak-db
4
+
5
+ ## Docs
6
+
7
+ - [Schema Migration Guide](./docs/schema-migration.md)
@@ -1,6 +1,10 @@
1
- import mysql, { Pool } from 'mysql2/promise';
1
+ import mysql, { Pool, PoolConnection } from 'mysql2/promise';
2
2
  import { TxnOption } from 'oak-domain/lib/types';
3
+ import { EntityDict, StorageSchema } from 'oak-domain/lib/types';
4
+ import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
3
5
  import { MySQLConfiguration } from './types/Configuration';
6
+ import { MySqlTranslator } from './translator';
7
+ import { MigrationPlanningOptions, Plan, SchemaInspectionResult } from '../types/migration';
4
8
  export declare class MySqlConnector {
5
9
  pool: Pool;
6
10
  configuration: MySQLConfiguration;
@@ -10,6 +14,10 @@ export declare class MySqlConnector {
10
14
  disconnect(): Promise<void>;
11
15
  startTransaction(option?: TxnOption): Promise<string>;
12
16
  exec(sql: string, txn?: string): Promise<[mysql.RowDataPacket[] | mysql.RowDataPacket[][] | mysql.OkPacket | mysql.OkPacket[] | mysql.ResultSetHeader, mysql.FieldPacket[]]>;
17
+ withConnection<T>(handler: (connection: PoolConnection) => Promise<T>): Promise<T>;
18
+ readSchema<ED extends EntityDict & BaseEntityDict>(translator: MySqlTranslator<ED>): Promise<StorageSchema<ED>>;
19
+ inspectSchema<ED extends EntityDict & BaseEntityDict>(translator: MySqlTranslator<ED>): Promise<SchemaInspectionResult<ED>>;
20
+ diffSchema<ED extends EntityDict & BaseEntityDict>(currentSchema: StorageSchema<ED>, targetSchema: StorageSchema<ED>, translator: MySqlTranslator<ED>, options?: MigrationPlanningOptions): Plan<ED>;
13
21
  commitTransaction(txn: string): Promise<void>;
14
22
  rollbackTransaction(txn: string): Promise<void>;
15
23
  }
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const promise_1 = tslib_1.__importDefault(require("mysql2/promise"));
6
6
  const uuid_1 = require("uuid");
7
7
  const assert_1 = tslib_1.__importDefault(require("assert"));
8
+ const migration_1 = require("./migration");
8
9
  class MySqlConnector {
9
10
  pool;
10
11
  configuration;
@@ -52,6 +53,29 @@ class MySqlConnector {
52
53
  return result;
53
54
  }
54
55
  }
56
+ async withConnection(handler) {
57
+ const connection = await this.pool.getConnection();
58
+ try {
59
+ return await handler(connection);
60
+ }
61
+ finally {
62
+ try {
63
+ connection.release();
64
+ }
65
+ catch {
66
+ // The caller may destroy the connection when the session becomes unusable.
67
+ }
68
+ }
69
+ }
70
+ async readSchema(translator) {
71
+ return (0, migration_1.readMySqlSchema)(this, translator);
72
+ }
73
+ async inspectSchema(translator) {
74
+ return (0, migration_1.inspectMySqlSchema)(this, translator);
75
+ }
76
+ diffSchema(currentSchema, targetSchema, translator, options) {
77
+ return (0, migration_1.buildMySqlMigrationPlan)(currentSchema, targetSchema, translator, options);
78
+ }
55
79
  async commitTransaction(txn) {
56
80
  const connection = this.txnDict[txn];
57
81
  (0, assert_1.default)(connection);
@@ -0,0 +1,10 @@
1
+ import { EntityDict } from 'oak-domain/lib/types';
2
+ import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
3
+ import { MigrationSchema, MigrationPlanningOptions, Plan, SchemaInspectionResult } from '../types/migration';
4
+ import { MySqlConnector } from './connector';
5
+ import { MySqlTranslator } from './translator';
6
+ type MySqlMigrationEntityDict = EntityDict & BaseEntityDict;
7
+ export declare function readMySqlSchema<ED extends MySqlMigrationEntityDict>(connector: MySqlConnector, translator: MySqlTranslator<ED>): Promise<MigrationSchema<ED>>;
8
+ export declare function inspectMySqlSchema<ED extends MySqlMigrationEntityDict>(connector: MySqlConnector, translator: MySqlTranslator<ED>): Promise<SchemaInspectionResult<ED>>;
9
+ export declare function buildMySqlMigrationPlan<ED extends MySqlMigrationEntityDict>(currentSchema: MigrationSchema<ED>, targetSchema: MigrationSchema<ED>, translator: MySqlTranslator<ED>, options?: MigrationPlanningOptions): Plan<ED>;
10
+ export {};