@tyravel/database 0.1.0 → 0.2.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.
Files changed (80) hide show
  1. package/dist/eager-loader.d.ts +6 -0
  2. package/dist/eager-loader.d.ts.map +1 -0
  3. package/dist/eager-loader.js +23 -0
  4. package/dist/eager-loader.js.map +1 -0
  5. package/dist/eager-loading.test.d.ts +2 -0
  6. package/dist/eager-loading.test.d.ts.map +1 -0
  7. package/dist/eager-loading.test.js +150 -0
  8. package/dist/eager-loading.test.js.map +1 -0
  9. package/dist/factory-helpers.d.ts +7 -0
  10. package/dist/factory-helpers.d.ts.map +1 -0
  11. package/dist/factory-helpers.js +23 -0
  12. package/dist/factory-helpers.js.map +1 -0
  13. package/dist/factory.d.ts +12 -0
  14. package/dist/factory.d.ts.map +1 -0
  15. package/dist/factory.js +25 -0
  16. package/dist/factory.js.map +1 -0
  17. package/dist/factory.test.d.ts +2 -0
  18. package/dist/factory.test.d.ts.map +1 -0
  19. package/dist/factory.test.js +53 -0
  20. package/dist/factory.test.js.map +1 -0
  21. package/dist/index.d.ts +5 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +5 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/migrator.d.ts.map +1 -1
  26. package/dist/migrator.js +11 -12
  27. package/dist/migrator.js.map +1 -1
  28. package/dist/model-query-builder.d.ts +3 -0
  29. package/dist/model-query-builder.d.ts.map +1 -1
  30. package/dist/model-query-builder.js +17 -1
  31. package/dist/model-query-builder.js.map +1 -1
  32. package/dist/model.d.ts +5 -0
  33. package/dist/model.d.ts.map +1 -1
  34. package/dist/model.js +14 -0
  35. package/dist/model.js.map +1 -1
  36. package/dist/relations/belongs-to-many.d.ts +8 -0
  37. package/dist/relations/belongs-to-many.d.ts.map +1 -1
  38. package/dist/relations/belongs-to-many.js +49 -0
  39. package/dist/relations/belongs-to-many.js.map +1 -1
  40. package/dist/relations/belongs-to.d.ts +7 -0
  41. package/dist/relations/belongs-to.d.ts.map +1 -1
  42. package/dist/relations/belongs-to.js +33 -2
  43. package/dist/relations/belongs-to.js.map +1 -1
  44. package/dist/relations/has-many.d.ts +5 -0
  45. package/dist/relations/has-many.d.ts.map +1 -1
  46. package/dist/relations/has-many.js +32 -0
  47. package/dist/relations/has-many.js.map +1 -1
  48. package/dist/relations/has-one.d.ts +5 -0
  49. package/dist/relations/has-one.d.ts.map +1 -1
  50. package/dist/relations/has-one.js +28 -0
  51. package/dist/relations/has-one.js.map +1 -1
  52. package/dist/relations/relation.d.ts +6 -0
  53. package/dist/relations/relation.d.ts.map +1 -1
  54. package/dist/relations/relation.js +15 -0
  55. package/dist/relations/relation.js.map +1 -1
  56. package/dist/schema/blueprint.d.ts +6 -1
  57. package/dist/schema/blueprint.d.ts.map +1 -1
  58. package/dist/schema/blueprint.js +88 -13
  59. package/dist/schema/blueprint.js.map +1 -1
  60. package/dist/schema/blueprint.test.d.ts +2 -0
  61. package/dist/schema/blueprint.test.d.ts.map +1 -0
  62. package/dist/schema/blueprint.test.js +36 -0
  63. package/dist/schema/blueprint.test.js.map +1 -0
  64. package/dist/schema/schema-builder.d.ts +2 -0
  65. package/dist/schema/schema-builder.d.ts.map +1 -1
  66. package/dist/schema/schema-builder.js +53 -3
  67. package/dist/schema/schema-builder.js.map +1 -1
  68. package/dist/seeder-runner.d.ts +10 -0
  69. package/dist/seeder-runner.d.ts.map +1 -0
  70. package/dist/seeder-runner.js +52 -0
  71. package/dist/seeder-runner.js.map +1 -0
  72. package/dist/seeder-runner.test.d.ts +2 -0
  73. package/dist/seeder-runner.test.d.ts.map +1 -0
  74. package/dist/seeder-runner.test.js +58 -0
  75. package/dist/seeder-runner.test.js.map +1 -0
  76. package/dist/seeder.d.ts +5 -0
  77. package/dist/seeder.d.ts.map +1 -0
  78. package/dist/seeder.js +6 -0
  79. package/dist/seeder.js.map +1 -0
  80. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"blueprint.js","sourceRoot":"","sources":["../../src/schema/blueprint.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,SAAS;IAGS;IAFZ,UAAU,GAAa,EAAE,CAAC;IAE3C,YAA6B,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;IAAG,CAAC;IAElD,EAAE,CAAC,IAAI,GAAG,IAAI;QACZ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,qCAAqC,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,MAAM,GAAG,GAAG;QAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,aAAa,MAAM,YAAY,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAY;QACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,iBAAiB,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,oBAAoB,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,8BAA8B,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU;QACR,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,OAA2B;QAChC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC;YACjE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,WAAW,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC1D,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;QACT,OAAO,iBAAiB,IAAI,CAAC,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5E,CAAC;IAED,SAAS;QACP,OAAO,yBAAyB,IAAI,CAAC,SAAS,GAAG,CAAC;IACpD,CAAC;CACF"}
1
+ {"version":3,"file":"blueprint.js","sourceRoot":"","sources":["../../src/schema/blueprint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=blueprint.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blueprint.test.d.ts","sourceRoot":"","sources":["../../src/schema/blueprint.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,36 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { MysqlGrammar, PostgresGrammar, SqliteGrammar } from '../grammar.js';
3
+ import { Blueprint } from './blueprint.js';
4
+ describe('Blueprint', () => {
5
+ it('compiles sqlite create table SQL', () => {
6
+ const blueprint = new Blueprint('users', new SqliteGrammar());
7
+ blueprint.id();
8
+ blueprint.string('email');
9
+ blueprint.timestamps();
10
+ expect(blueprint.toCreateSql()).toBe('CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT, "email" TEXT NOT NULL, "created_at" TEXT NOT NULL, "updated_at" TEXT NOT NULL)');
11
+ });
12
+ it('compiles postgres create table SQL', () => {
13
+ const blueprint = new Blueprint('users', new PostgresGrammar());
14
+ blueprint.id();
15
+ blueprint.string('email');
16
+ blueprint.boolean('active');
17
+ blueprint.timestamp('verified_at').nullable();
18
+ blueprint.timestamps();
19
+ expect(blueprint.toCreateSql()).toBe('CREATE TABLE "users" ("id" BIGSERIAL PRIMARY KEY, "email" VARCHAR(255) NOT NULL, "active" BOOLEAN NOT NULL DEFAULT FALSE, "verified_at" TIMESTAMP(0) WITHOUT TIME ZONE, "created_at" TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, "updated_at" TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL)');
20
+ });
21
+ it('compiles mysql create table SQL', () => {
22
+ const blueprint = new Blueprint('jobs', new MysqlGrammar());
23
+ blueprint.id();
24
+ blueprint.string('queue');
25
+ blueprint.text('payload');
26
+ blueprint.integer('attempts');
27
+ blueprint.integer('reserved_at').nullable();
28
+ blueprint.unique(['queue', 'payload']);
29
+ expect(blueprint.toCreateSql()).toBe('CREATE TABLE `jobs` (`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `queue` VARCHAR(255) NOT NULL, `payload` TEXT NOT NULL, `attempts` INT NOT NULL, `reserved_at` INT NULL, UNIQUE (`queue`, `payload`))');
30
+ });
31
+ it('uses dialect-specific drop table SQL', () => {
32
+ expect(new Blueprint('users', new PostgresGrammar()).toDropSql()).toBe('DROP TABLE IF EXISTS "users"');
33
+ expect(new Blueprint('users', new MysqlGrammar()).toDropSql()).toBe('DROP TABLE IF EXISTS `users`');
34
+ });
35
+ });
36
+ //# sourceMappingURL=blueprint.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blueprint.test.js","sourceRoot":"","sources":["../../src/schema/blueprint.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,aAAa,EAAE,CAAC,CAAC;QAC9D,SAAS,CAAC,EAAE,EAAE,CAAC;QACf,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1B,SAAS,CAAC,UAAU,EAAE,CAAC;QAEvB,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAClC,8IAA8I,CAC/I,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,eAAe,EAAE,CAAC,CAAC;QAChE,SAAS,CAAC,EAAE,EAAE,CAAC;QACf,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1B,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5B,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9C,SAAS,CAAC,UAAU,EAAE,CAAC;QAEvB,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAClC,qRAAqR,CACtR,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC;QAC5D,SAAS,CAAC,EAAE,EAAE,CAAC;QACf,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1B,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1B,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9B,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5C,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QAEvC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAClC,sNAAsN,CACvN,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,eAAe,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CACpE,8BAA8B,CAC/B,CAAC;QACF,MAAM,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CACjE,8BAA8B,CAC/B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { DatabaseConnection } from '../connection.js';
2
+ import type { SqlGrammar } from '../grammar.js';
2
3
  import { Blueprint } from './blueprint.js';
3
4
  export declare class SchemaBuilder {
4
5
  private readonly connection;
@@ -7,4 +8,5 @@ export declare class SchemaBuilder {
7
8
  drop(tableName: string): Promise<void>;
8
9
  hasTable(tableName: string): Promise<boolean>;
9
10
  }
11
+ export declare function migrationsTableSql(grammar: SqlGrammar): string;
10
12
  //# sourceMappingURL=schema-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-builder.d.ts","sourceRoot":"","sources":["../../src/schema/schema-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,kBAAkB;IAErD,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GACnC,OAAO,CAAC,IAAI,CAAC;IAMV,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAOpD"}
1
+ {"version":3,"file":"schema-builder.d.ts","sourceRoot":"","sources":["../../src/schema/schema-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,kBAAkB;IAErD,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GACnC,OAAO,CAAC,IAAI,CAAC;IAMV,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAKpD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CA8B9D"}
@@ -5,17 +5,67 @@ export class SchemaBuilder {
5
5
  this.connection = connection;
6
6
  }
7
7
  async create(tableName, callback) {
8
- const blueprint = new Blueprint(tableName);
8
+ const blueprint = new Blueprint(tableName, this.connection.grammar);
9
9
  callback(blueprint);
10
10
  await this.connection.exec(blueprint.toCreateSql());
11
11
  }
12
12
  async drop(tableName) {
13
- const blueprint = new Blueprint(tableName);
13
+ const blueprint = new Blueprint(tableName, this.connection.grammar);
14
14
  await this.connection.exec(blueprint.toDropSql());
15
15
  }
16
16
  async hasTable(tableName) {
17
- const result = await this.connection.query(`SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?`, [tableName]);
17
+ const { sql, bindings } = hasTableQuery(this.connection.grammar, tableName);
18
+ const result = await this.connection.query(sql, bindings);
18
19
  return result.rows.length > 0;
19
20
  }
20
21
  }
22
+ export function migrationsTableSql(grammar) {
23
+ const table = grammar.wrapIdentifier('migrations');
24
+ const id = grammar.wrapIdentifier('id');
25
+ const migration = grammar.wrapIdentifier('migration');
26
+ const batch = grammar.wrapIdentifier('batch');
27
+ const executedAt = grammar.wrapIdentifier('executed_at');
28
+ switch (grammar.driver) {
29
+ case 'postgres':
30
+ return `CREATE TABLE IF NOT EXISTS ${table} (
31
+ ${id} BIGSERIAL PRIMARY KEY,
32
+ ${migration} VARCHAR(255) NOT NULL,
33
+ ${batch} INTEGER NOT NULL,
34
+ ${executedAt} TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL
35
+ )`;
36
+ case 'mysql':
37
+ return `CREATE TABLE IF NOT EXISTS ${table} (
38
+ ${id} BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
39
+ ${migration} VARCHAR(255) NOT NULL,
40
+ ${batch} INT NOT NULL,
41
+ ${executedAt} TIMESTAMP NOT NULL
42
+ )`;
43
+ default:
44
+ return `CREATE TABLE IF NOT EXISTS ${table} (
45
+ ${id} INTEGER PRIMARY KEY AUTOINCREMENT,
46
+ ${migration} TEXT NOT NULL,
47
+ ${batch} INTEGER NOT NULL,
48
+ ${executedAt} TEXT NOT NULL
49
+ )`;
50
+ }
51
+ }
52
+ function hasTableQuery(grammar, tableName) {
53
+ switch (grammar.driver) {
54
+ case 'postgres':
55
+ return {
56
+ sql: `SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname = 'public' AND tablename = ${grammar.parameter(1)}`,
57
+ bindings: [tableName],
58
+ };
59
+ case 'mysql':
60
+ return {
61
+ sql: `SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ${grammar.parameter(1)}`,
62
+ bindings: [tableName],
63
+ };
64
+ default:
65
+ return {
66
+ sql: `SELECT name FROM sqlite_master WHERE type = 'table' AND name = ${grammar.parameter(1)}`,
67
+ bindings: [tableName],
68
+ };
69
+ }
70
+ }
21
71
  //# sourceMappingURL=schema-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-builder.js","sourceRoot":"","sources":["../../src/schema/schema-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,UAA8B;QAA9B,eAAU,GAAV,UAAU,CAAoB;IAAG,CAAC;IAE/D,KAAK,CAAC,MAAM,CACV,SAAiB,EACjB,QAAoC;QAEpC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3C,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAiB;QAC1B,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CACxC,kEAAkE,EAClE,CAAC,SAAS,CAAC,CACZ,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,CAAC;CACF"}
1
+ {"version":3,"file":"schema-builder.js","sourceRoot":"","sources":["../../src/schema/schema-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,UAA8B;QAA9B,eAAU,GAAV,UAAU,CAAoB;IAAG,CAAC;IAE/D,KAAK,CAAC,MAAM,CACV,SAAiB,EACjB,QAAoC;QAEpC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACpE,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAiB;QAC1B,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACpE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB;QAC9B,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,CAAC;CACF;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAmB;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IAEzD,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,KAAK,UAAU;YACb,OAAO,8BAA8B,KAAK;UACtC,EAAE;UACF,SAAS;UACT,KAAK;UACL,UAAU;QACZ,CAAC;QACL,KAAK,OAAO;YACV,OAAO,8BAA8B,KAAK;UACtC,EAAE;UACF,SAAS;UACT,KAAK;UACL,UAAU;QACZ,CAAC;QACL;YACE,OAAO,8BAA8B,KAAK;UACtC,EAAE;UACF,SAAS;UACT,KAAK;UACL,UAAU;QACZ,CAAC;IACP,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,OAAmB,EACnB,SAAiB;IAEjB,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,KAAK,UAAU;YACb,OAAO;gBACL,GAAG,EAAE,0FAA0F,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;gBACrH,QAAQ,EAAE,CAAC,SAAS,CAAC;aACtB,CAAC;QACJ,KAAK,OAAO;YACV,OAAO;gBACL,GAAG,EAAE,qGAAqG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;gBAChI,QAAQ,EAAE,CAAC,SAAS,CAAC;aACtB,CAAC;QACJ;YACE,OAAO;gBACL,GAAG,EAAE,kEAAkE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;gBAC7F,QAAQ,EAAE,CAAC,SAAS,CAAC;aACtB,CAAC;IACN,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare class SeederRunner {
2
+ private readonly seedersPath;
3
+ constructor(seedersPath: string);
4
+ run(className?: string): Promise<string>;
5
+ private resolve;
6
+ private findSeederExport;
7
+ private files;
8
+ private load;
9
+ }
10
+ //# sourceMappingURL=seeder-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seeder-runner.d.ts","sourceRoot":"","sources":["../src/seeder-runner.ts"],"names":[],"mappings":"AAKA,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,MAAM;IAE1C,GAAG,CAAC,SAAS,SAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;YAO1C,OAAO;IAYrB,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,KAAK;YAUC,IAAI;CAInB"}
@@ -0,0 +1,52 @@
1
+ import { readdirSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { pathToFileURL } from 'node:url';
4
+ export class SeederRunner {
5
+ seedersPath;
6
+ constructor(seedersPath) {
7
+ this.seedersPath = seedersPath;
8
+ }
9
+ async run(className = 'DatabaseSeeder') {
10
+ const SeederClass = await this.resolve(className);
11
+ const seeder = new SeederClass();
12
+ await seeder.run();
13
+ return className;
14
+ }
15
+ async resolve(className) {
16
+ for (const file of this.files()) {
17
+ const loaded = await this.load(file);
18
+ const SeederClass = this.findSeederExport(loaded, className);
19
+ if (SeederClass) {
20
+ return SeederClass;
21
+ }
22
+ }
23
+ throw new Error(`Seeder [${className}] not found in ${this.seedersPath}.`);
24
+ }
25
+ findSeederExport(loaded, className) {
26
+ const named = loaded[className];
27
+ if (typeof named === 'function') {
28
+ return named;
29
+ }
30
+ const defaultExport = loaded.default;
31
+ if (typeof defaultExport === 'function' &&
32
+ defaultExport.name === className) {
33
+ return defaultExport;
34
+ }
35
+ return undefined;
36
+ }
37
+ files() {
38
+ try {
39
+ return readdirSync(this.seedersPath)
40
+ .filter((file) => file.endsWith('.ts') || file.endsWith('.js'))
41
+ .sort();
42
+ }
43
+ catch {
44
+ return [];
45
+ }
46
+ }
47
+ async load(file) {
48
+ const moduleUrl = pathToFileURL(join(this.seedersPath, file)).href;
49
+ return import(moduleUrl);
50
+ }
51
+ }
52
+ //# sourceMappingURL=seeder-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seeder-runner.js","sourceRoot":"","sources":["../src/seeder-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,OAAO,YAAY;IACM;IAA7B,YAA6B,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;IAAG,CAAC;IAEpD,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,gBAAgB;QACpC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,SAAiB;QACrC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC7D,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,WAAW,CAAC;YACrB,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,kBAAkB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IAC7E,CAAC;IAEO,gBAAgB,CACtB,MAA+B,EAC/B,SAAiB;QAEjB,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO,KAAyB,CAAC;QACnC,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;QACrC,IACE,OAAO,aAAa,KAAK,UAAU;YAClC,aAAmC,CAAC,IAAI,KAAK,SAAS,EACvD,CAAC;YACD,OAAO,aAAiC,CAAC;QAC3C,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK;QACX,IAAI,CAAC;YACH,OAAO,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;iBACjC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBAC9D,IAAI,EAAE,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,IAAY;QAC7B,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,OAAO,MAAM,CAAC,SAAS,CAAqC,CAAC;IAC/D,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=seeder-runner.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seeder-runner.test.d.ts","sourceRoot":"","sources":["../src/seeder-runner.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,58 @@
1
+ import { mkdirSync, writeFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { tmpdir } from 'node:os';
4
+ import { afterEach, describe, expect, it } from 'vitest';
5
+ import { Seeder } from './seeder.js';
6
+ import { SeederRunner } from './seeder-runner.js';
7
+ const tempDirs = [];
8
+ function createSeedersDir(seeders) {
9
+ const dir = join(tmpdir(), `tyravel-seeders-${Date.now()}-${Math.random()}`);
10
+ mkdirSync(dir, { recursive: true });
11
+ for (const [fileName, contents] of Object.entries(seeders)) {
12
+ writeFileSync(join(dir, fileName), contents, 'utf8');
13
+ }
14
+ tempDirs.push(dir);
15
+ return dir;
16
+ }
17
+ afterEach(() => {
18
+ tempDirs.length = 0;
19
+ });
20
+ describe('SeederRunner', () => {
21
+ it('runs the requested seeder class', async () => {
22
+ const dir = createSeedersDir({
23
+ 'database-seeder.js': `
24
+ export class DatabaseSeeder {
25
+ async run() {
26
+ globalThis.__seeded = true;
27
+ }
28
+ }
29
+ `,
30
+ });
31
+ const runner = new SeederRunner(dir);
32
+ const ran = await runner.run('DatabaseSeeder');
33
+ expect(ran).toBe('DatabaseSeeder');
34
+ expect(globalThis.__seeded).toBe(true);
35
+ delete globalThis.__seeded;
36
+ });
37
+ it('delegates to other seeders via call()', async () => {
38
+ class UserSeeder extends Seeder {
39
+ async run() {
40
+ globalThis.__userSeeded = true;
41
+ }
42
+ }
43
+ class DatabaseSeeder extends Seeder {
44
+ async run() {
45
+ await this.call(UserSeeder);
46
+ }
47
+ }
48
+ await new DatabaseSeeder().run();
49
+ expect(globalThis.__userSeeded).toBe(true);
50
+ delete globalThis.__userSeeded;
51
+ });
52
+ it('throws when the seeder class is missing', async () => {
53
+ const dir = createSeedersDir({});
54
+ const runner = new SeederRunner(dir);
55
+ await expect(runner.run('MissingSeeder')).rejects.toThrow('Seeder [MissingSeeder] not found');
56
+ });
57
+ });
58
+ //# sourceMappingURL=seeder-runner.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seeder-runner.test.js","sourceRoot":"","sources":["../src/seeder-runner.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,QAAQ,GAAa,EAAE,CAAC;AAE9B,SAAS,gBAAgB,CAAC,OAA+B;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7E,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpC,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,CAAC,GAAG,EAAE;IACb,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,GAAG,GAAG,gBAAgB,CAAC;YAC3B,oBAAoB,EAAE;;;;;;OAMrB;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAE/C,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnC,MAAM,CAAE,UAAqC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,OAAQ,UAAqC,CAAC,QAAQ,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,UAAW,SAAQ,MAAM;YACpB,KAAK,CAAC,GAAG;gBACf,UAAyC,CAAC,YAAY,GAAG,IAAI,CAAC;YACjE,CAAC;SACF;QAED,MAAM,cAAe,SAAQ,MAAM;YACxB,KAAK,CAAC,GAAG;gBAChB,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,CAAC;SACF;QAED,MAAM,IAAI,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,CAAE,UAAyC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3E,OAAQ,UAAyC,CAAC,YAAY,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,GAAG,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;QAErC,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACvD,kCAAkC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare abstract class Seeder {
2
+ abstract run(): Promise<void>;
3
+ call(SeederClass: new () => Seeder): Promise<void>;
4
+ }
5
+ //# sourceMappingURL=seeder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seeder.d.ts","sourceRoot":"","sources":["../src/seeder.ts"],"names":[],"mappings":"AAAA,8BAAsB,MAAM;IAC1B,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAEvB,IAAI,CAAC,WAAW,EAAE,UAAU,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzD"}
package/dist/seeder.js ADDED
@@ -0,0 +1,6 @@
1
+ export class Seeder {
2
+ async call(SeederClass) {
3
+ await new SeederClass().run();
4
+ }
5
+ }
6
+ //# sourceMappingURL=seeder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seeder.js","sourceRoot":"","sources":["../src/seeder.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,MAAM;IAG1B,KAAK,CAAC,IAAI,CAAC,WAA6B;QACtC,MAAM,IAAI,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;IAChC,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tyravel/database",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",