@orchestr-sh/orchestr 1.5.11 → 1.6.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 +199 -0
- package/dist/Console/Command.d.ts +59 -0
- package/dist/Console/Command.d.ts.map +1 -0
- package/dist/Console/Command.js +68 -0
- package/dist/Console/Command.js.map +1 -0
- package/dist/Console/Commands/MakeMigrationCommand.d.ts +15 -0
- package/dist/Console/Commands/MakeMigrationCommand.d.ts.map +1 -0
- package/dist/Console/Commands/MakeMigrationCommand.js +41 -0
- package/dist/Console/Commands/MakeMigrationCommand.js.map +1 -0
- package/dist/Console/Commands/MakeSeederCommand.d.ts +23 -0
- package/dist/Console/Commands/MakeSeederCommand.d.ts.map +1 -0
- package/dist/Console/Commands/MakeSeederCommand.js +109 -0
- package/dist/Console/Commands/MakeSeederCommand.js.map +1 -0
- package/dist/Console/Commands/MigrateCommand.d.ts +15 -0
- package/dist/Console/Commands/MigrateCommand.d.ts.map +1 -0
- package/dist/Console/Commands/MigrateCommand.js +48 -0
- package/dist/Console/Commands/MigrateCommand.js.map +1 -0
- package/dist/Console/Commands/MigrateFreshCommand.d.ts +15 -0
- package/dist/Console/Commands/MigrateFreshCommand.d.ts.map +1 -0
- package/dist/Console/Commands/MigrateFreshCommand.js +54 -0
- package/dist/Console/Commands/MigrateFreshCommand.js.map +1 -0
- package/dist/Console/Commands/MigrateRefreshCommand.d.ts +15 -0
- package/dist/Console/Commands/MigrateRefreshCommand.d.ts.map +1 -0
- package/dist/Console/Commands/MigrateRefreshCommand.js +52 -0
- package/dist/Console/Commands/MigrateRefreshCommand.js.map +1 -0
- package/dist/Console/Commands/MigrateResetCommand.d.ts +15 -0
- package/dist/Console/Commands/MigrateResetCommand.d.ts.map +1 -0
- package/dist/Console/Commands/MigrateResetCommand.js +46 -0
- package/dist/Console/Commands/MigrateResetCommand.js.map +1 -0
- package/dist/Console/Commands/MigrateRollbackCommand.d.ts +15 -0
- package/dist/Console/Commands/MigrateRollbackCommand.d.ts.map +1 -0
- package/dist/Console/Commands/MigrateRollbackCommand.js +49 -0
- package/dist/Console/Commands/MigrateRollbackCommand.js.map +1 -0
- package/dist/Console/Commands/MigrateStatusCommand.d.ts +15 -0
- package/dist/Console/Commands/MigrateStatusCommand.d.ts.map +1 -0
- package/dist/Console/Commands/MigrateStatusCommand.js +58 -0
- package/dist/Console/Commands/MigrateStatusCommand.js.map +1 -0
- package/dist/Console/Commands/SeedCommand.d.ts +15 -0
- package/dist/Console/Commands/SeedCommand.d.ts.map +1 -0
- package/dist/Console/Commands/SeedCommand.js +44 -0
- package/dist/Console/Commands/SeedCommand.js.map +1 -0
- package/dist/Console/ConsoleKernel.d.ts +45 -0
- package/dist/Console/ConsoleKernel.d.ts.map +1 -0
- package/dist/Console/ConsoleKernel.js +109 -0
- package/dist/Console/ConsoleKernel.js.map +1 -0
- package/dist/Console/orchestr.d.ts +8 -0
- package/dist/Console/orchestr.d.ts.map +1 -0
- package/dist/Console/orchestr.js +45 -0
- package/dist/Console/orchestr.js.map +1 -0
- package/dist/Container/Container.js.map +1 -1
- package/dist/Database/Connection.d.ts.map +1 -1
- package/dist/Database/Connection.js.map +1 -1
- package/dist/Database/Ensemble/Concerns/HasDynamicRelations.d.ts.map +1 -1
- package/dist/Database/Ensemble/Concerns/HasDynamicRelations.js +43 -12
- package/dist/Database/Ensemble/Concerns/HasDynamicRelations.js.map +1 -1
- package/dist/Database/Ensemble/Concerns/HasRelationships.d.ts.map +1 -1
- package/dist/Database/Ensemble/Concerns/HasRelationships.js +2 -5
- package/dist/Database/Ensemble/Concerns/HasRelationships.js.map +1 -1
- package/dist/Database/Ensemble/Ensemble.d.ts.map +1 -1
- package/dist/Database/Ensemble/Ensemble.js +15 -11
- package/dist/Database/Ensemble/Ensemble.js.map +1 -1
- package/dist/Database/Ensemble/EnsembleBuilder.d.ts.map +1 -1
- package/dist/Database/Ensemble/EnsembleBuilder.js.map +1 -1
- package/dist/Database/Ensemble/Relations/BelongsTo.d.ts.map +1 -1
- package/dist/Database/Ensemble/Relations/BelongsTo.js.map +1 -1
- package/dist/Database/Ensemble/Relations/BelongsToMany.d.ts.map +1 -1
- package/dist/Database/Ensemble/Relations/BelongsToMany.js +1 -4
- package/dist/Database/Ensemble/Relations/BelongsToMany.js.map +1 -1
- package/dist/Database/Ensemble/Relations/HasMany.d.ts.map +1 -1
- package/dist/Database/Ensemble/Relations/HasMany.js.map +1 -1
- package/dist/Database/Ensemble/Relations/HasOne.d.ts.map +1 -1
- package/dist/Database/Ensemble/Relations/HasOne.js.map +1 -1
- package/dist/Database/Ensemble/Relations/MorphMany.d.ts.map +1 -1
- package/dist/Database/Ensemble/Relations/MorphMany.js +2 -6
- package/dist/Database/Ensemble/Relations/MorphMany.js.map +1 -1
- package/dist/Database/Ensemble/Relations/MorphOne.d.ts.map +1 -1
- package/dist/Database/Ensemble/Relations/MorphOne.js +2 -6
- package/dist/Database/Ensemble/Relations/MorphOne.js.map +1 -1
- package/dist/Database/Ensemble/Relations/MorphTo.d.ts.map +1 -1
- package/dist/Database/Ensemble/Relations/MorphTo.js +5 -11
- package/dist/Database/Ensemble/Relations/MorphTo.js.map +1 -1
- package/dist/Database/Ensemble/Relations/MorphToMany.d.ts.map +1 -1
- package/dist/Database/Ensemble/Relations/MorphToMany.js +1 -3
- package/dist/Database/Ensemble/Relations/MorphToMany.js.map +1 -1
- package/dist/Database/Ensemble/Relations/MorphedByMany.d.ts.map +1 -1
- package/dist/Database/Ensemble/Relations/MorphedByMany.js.map +1 -1
- package/dist/Database/Ensemble/Relations/Relation.d.ts.map +1 -1
- package/dist/Database/Ensemble/Relations/Relation.js +4 -2
- package/dist/Database/Ensemble/Relations/Relation.js.map +1 -1
- package/dist/Database/Migrations/Blueprint.d.ts +166 -0
- package/dist/Database/Migrations/Blueprint.d.ts.map +1 -0
- package/dist/Database/Migrations/Blueprint.js +318 -0
- package/dist/Database/Migrations/Blueprint.js.map +1 -0
- package/dist/Database/Migrations/ColumnDefinition.d.ts +62 -0
- package/dist/Database/Migrations/ColumnDefinition.d.ts.map +1 -0
- package/dist/Database/Migrations/ColumnDefinition.js +95 -0
- package/dist/Database/Migrations/ColumnDefinition.js.map +1 -0
- package/dist/Database/Migrations/ForeignKeyDefinition.d.ts +32 -0
- package/dist/Database/Migrations/ForeignKeyDefinition.d.ts.map +1 -0
- package/dist/Database/Migrations/ForeignKeyDefinition.js +50 -0
- package/dist/Database/Migrations/ForeignKeyDefinition.js.map +1 -0
- package/dist/Database/Migrations/Migration.d.ts +17 -0
- package/dist/Database/Migrations/Migration.d.ts.map +1 -0
- package/dist/Database/Migrations/Migration.js +12 -0
- package/dist/Database/Migrations/Migration.js.map +1 -0
- package/dist/Database/Migrations/MigrationCreator.d.ts +42 -0
- package/dist/Database/Migrations/MigrationCreator.d.ts.map +1 -0
- package/dist/Database/Migrations/MigrationCreator.js +184 -0
- package/dist/Database/Migrations/MigrationCreator.js.map +1 -0
- package/dist/Database/Migrations/MigrationRepository.d.ts +65 -0
- package/dist/Database/Migrations/MigrationRepository.d.ts.map +1 -0
- package/dist/Database/Migrations/MigrationRepository.js +120 -0
- package/dist/Database/Migrations/MigrationRepository.js.map +1 -0
- package/dist/Database/Migrations/Migrator.d.ts +84 -0
- package/dist/Database/Migrations/Migrator.d.ts.map +1 -0
- package/dist/Database/Migrations/Migrator.js +239 -0
- package/dist/Database/Migrations/Migrator.js.map +1 -0
- package/dist/Database/Migrations/SchemaBuilder.d.ts +136 -0
- package/dist/Database/Migrations/SchemaBuilder.d.ts.map +1 -0
- package/dist/Database/Migrations/SchemaBuilder.js +505 -0
- package/dist/Database/Migrations/SchemaBuilder.js.map +1 -0
- package/dist/Database/Query/Builder.d.ts.map +1 -1
- package/dist/Database/Query/Builder.js +5 -4
- package/dist/Database/Query/Builder.js.map +1 -1
- package/dist/Database/Seeders/Seeder.d.ts +29 -0
- package/dist/Database/Seeders/Seeder.d.ts.map +1 -0
- package/dist/Database/Seeders/Seeder.js +41 -0
- package/dist/Database/Seeders/Seeder.js.map +1 -0
- package/dist/Database/Seeders/SeederRunner.d.ts +41 -0
- package/dist/Database/Seeders/SeederRunner.d.ts.map +1 -0
- package/dist/Database/Seeders/SeederRunner.js +134 -0
- package/dist/Database/Seeders/SeederRunner.js.map +1 -0
- package/dist/Facades/DB.d.ts.map +1 -1
- package/dist/Facades/DB.js.map +1 -1
- package/dist/Facades/Route.js +1 -1
- package/dist/Foundation/Application.js +3 -3
- package/dist/Foundation/Application.js.map +1 -1
- package/dist/Foundation/Config/Config.js +1 -1
- package/dist/Foundation/Config/Config.js.map +1 -1
- package/dist/Foundation/Http/FormRequest.d.ts.map +1 -1
- package/dist/Foundation/Http/FormRequest.js +2 -2
- package/dist/Foundation/Http/FormRequest.js.map +1 -1
- package/dist/Foundation/Http/Kernel.d.ts.map +1 -1
- package/dist/Foundation/Http/Kernel.js +1 -1
- package/dist/Foundation/Http/Kernel.js.map +1 -1
- package/dist/Foundation/Http/Validator.d.ts.map +1 -1
- package/dist/Foundation/Http/Validator.js +27 -22
- package/dist/Foundation/Http/Validator.js.map +1 -1
- package/dist/Routing/Request.js +1 -1
- package/dist/Routing/Request.js.map +1 -1
- package/dist/Routing/Route.js +1 -1
- package/dist/Routing/Route.js.map +1 -1
- package/dist/Routing/Router.d.ts.map +1 -1
- package/dist/Routing/Router.js +5 -6
- package/dist/Routing/Router.js.map +1 -1
- package/dist/Support/Facade.js +2 -2
- package/dist/index.d.ts +28 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -1
- package/package.json +34 -10
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Migrator
|
|
4
|
+
*
|
|
5
|
+
* Handles running and rolling back migrations
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.Migrator = void 0;
|
|
42
|
+
const MigrationRepository_1 = require("./MigrationRepository");
|
|
43
|
+
const SchemaBuilder_1 = require("./SchemaBuilder");
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const fs = __importStar(require("fs"));
|
|
46
|
+
class Migrator {
|
|
47
|
+
connection;
|
|
48
|
+
paths;
|
|
49
|
+
repository;
|
|
50
|
+
schema;
|
|
51
|
+
constructor(connection, paths) {
|
|
52
|
+
this.connection = connection;
|
|
53
|
+
this.paths = paths;
|
|
54
|
+
this.repository = new MigrationRepository_1.MigrationRepository(connection);
|
|
55
|
+
this.schema = new SchemaBuilder_1.SchemaBuilder(connection);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Run the pending migrations
|
|
59
|
+
*/
|
|
60
|
+
async run(options = {}) {
|
|
61
|
+
const ran = [];
|
|
62
|
+
// Ensure the migrations repository exists
|
|
63
|
+
await this.repository.createRepository();
|
|
64
|
+
const files = await this.getMigrationFiles();
|
|
65
|
+
const ranMigrations = await this.repository.getRan();
|
|
66
|
+
const pending = files.filter((file) => !ranMigrations.includes(file));
|
|
67
|
+
if (pending.length === 0) {
|
|
68
|
+
return [];
|
|
69
|
+
}
|
|
70
|
+
const batch = await this.repository.getNextBatchNumber();
|
|
71
|
+
for (const file of pending) {
|
|
72
|
+
await this.runUp(file, batch, options.pretend || false);
|
|
73
|
+
ran.push(file);
|
|
74
|
+
}
|
|
75
|
+
return ran;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Run a single migration up
|
|
79
|
+
*/
|
|
80
|
+
async runUp(file, batch, pretend) {
|
|
81
|
+
const migration = await this.resolveMigration(file);
|
|
82
|
+
if (pretend) {
|
|
83
|
+
console.log(`Would run: ${file}`);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
await migration.up(this.schema);
|
|
87
|
+
await this.repository.log(file, batch);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Rollback the last migration batch
|
|
91
|
+
*/
|
|
92
|
+
async rollback(options = {}) {
|
|
93
|
+
const rolledBack = [];
|
|
94
|
+
const migrations = await this.getMigrationsForRollback(options);
|
|
95
|
+
if (migrations.length === 0) {
|
|
96
|
+
return [];
|
|
97
|
+
}
|
|
98
|
+
for (const migration of migrations) {
|
|
99
|
+
await this.runDown(migration.migration, options.pretend || false);
|
|
100
|
+
rolledBack.push(migration.migration);
|
|
101
|
+
}
|
|
102
|
+
return rolledBack;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Run a single migration down
|
|
106
|
+
*/
|
|
107
|
+
async runDown(file, pretend) {
|
|
108
|
+
const migration = await this.resolveMigration(file);
|
|
109
|
+
if (pretend) {
|
|
110
|
+
console.log(`Would rollback: ${file}`);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
await migration.down(this.schema);
|
|
114
|
+
await this.repository.delete({ migration: file, batch: 0 });
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Reset all migrations
|
|
118
|
+
*/
|
|
119
|
+
async reset() {
|
|
120
|
+
const rolledBack = [];
|
|
121
|
+
const migrations = await this.repository.getMigrations();
|
|
122
|
+
if (migrations.length === 0) {
|
|
123
|
+
return [];
|
|
124
|
+
}
|
|
125
|
+
// Reverse the order for rollback
|
|
126
|
+
migrations.reverse();
|
|
127
|
+
for (const migration of migrations) {
|
|
128
|
+
await this.runDown(migration.migration, false);
|
|
129
|
+
rolledBack.push(migration.migration);
|
|
130
|
+
}
|
|
131
|
+
return rolledBack;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Refresh the database (reset and re-run all migrations)
|
|
135
|
+
*/
|
|
136
|
+
async refresh() {
|
|
137
|
+
const rolledBack = await this.reset();
|
|
138
|
+
const ran = await this.run();
|
|
139
|
+
return { rolledBack, ran };
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Get migrations for rollback
|
|
143
|
+
*/
|
|
144
|
+
async getMigrationsForRollback(options) {
|
|
145
|
+
if (options.step && options.step > 0) {
|
|
146
|
+
return await this.repository.getMigrations(options.step);
|
|
147
|
+
}
|
|
148
|
+
return await this.repository.getLast();
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Resolve a migration instance from a file
|
|
152
|
+
*/
|
|
153
|
+
async resolveMigration(file) {
|
|
154
|
+
const migrationPath = await this.findMigrationFile(file);
|
|
155
|
+
if (!migrationPath) {
|
|
156
|
+
throw new Error(`Migration file not found: ${file}`);
|
|
157
|
+
}
|
|
158
|
+
// Import the migration file
|
|
159
|
+
const migrationModule = await Promise.resolve(`${migrationPath}`).then(s => __importStar(require(s)));
|
|
160
|
+
// Get the default export or the first class export
|
|
161
|
+
const MigrationClass = migrationModule.default || Object.values(migrationModule)[0];
|
|
162
|
+
if (!MigrationClass) {
|
|
163
|
+
throw new Error(`No migration class found in: ${file}`);
|
|
164
|
+
}
|
|
165
|
+
return new MigrationClass();
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Find a migration file in the paths
|
|
169
|
+
*/
|
|
170
|
+
async findMigrationFile(file) {
|
|
171
|
+
for (const searchPath of this.paths) {
|
|
172
|
+
const fullPath = path.join(searchPath, file);
|
|
173
|
+
// Try with .ts extension
|
|
174
|
+
if (fs.existsSync(fullPath + '.ts')) {
|
|
175
|
+
return fullPath + '.ts';
|
|
176
|
+
}
|
|
177
|
+
// Try with .js extension
|
|
178
|
+
if (fs.existsSync(fullPath + '.js')) {
|
|
179
|
+
return fullPath + '.js';
|
|
180
|
+
}
|
|
181
|
+
// Try without extension
|
|
182
|
+
if (fs.existsSync(fullPath)) {
|
|
183
|
+
return fullPath;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get all migration files
|
|
190
|
+
*/
|
|
191
|
+
async getMigrationFiles() {
|
|
192
|
+
const files = [];
|
|
193
|
+
for (const searchPath of this.paths) {
|
|
194
|
+
if (!fs.existsSync(searchPath)) {
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
const dirFiles = fs.readdirSync(searchPath);
|
|
198
|
+
for (const file of dirFiles) {
|
|
199
|
+
if (file.match(/\.(ts|js)$/)) {
|
|
200
|
+
files.push(file.replace(/\.(ts|js)$/, ''));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Remove duplicates and sort
|
|
205
|
+
return Array.from(new Set(files)).sort();
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Get the ran migrations
|
|
209
|
+
*/
|
|
210
|
+
async getRan() {
|
|
211
|
+
return await this.repository.getRan();
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Get migrations with their batch numbers
|
|
215
|
+
*/
|
|
216
|
+
async getMigrationBatches() {
|
|
217
|
+
return await this.repository.getMigrationBatches();
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Get the migration repository
|
|
221
|
+
*/
|
|
222
|
+
getRepository() {
|
|
223
|
+
return this.repository;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Set the migration paths
|
|
227
|
+
*/
|
|
228
|
+
setPaths(paths) {
|
|
229
|
+
this.paths = paths;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Get the migration paths
|
|
233
|
+
*/
|
|
234
|
+
getPaths() {
|
|
235
|
+
return this.paths;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
exports.Migrator = Migrator;
|
|
239
|
+
//# sourceMappingURL=Migrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migrator.js","sourceRoot":"","sources":["../../../src/Database/Migrations/Migrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SchemaBuilder
|
|
3
|
+
*
|
|
4
|
+
* Builds and executes schema migrations with support for multiple database drivers
|
|
5
|
+
*/
|
|
6
|
+
import { Schema } from '../Contracts/Schema';
|
|
7
|
+
import { Connection } from '../Connection';
|
|
8
|
+
import { Blueprint } from './Blueprint';
|
|
9
|
+
import { ColumnDefinition } from './ColumnDefinition';
|
|
10
|
+
import { ForeignKeyDefinition } from './ForeignKeyDefinition';
|
|
11
|
+
export declare class SchemaBuilder implements Schema {
|
|
12
|
+
protected connection: Connection;
|
|
13
|
+
protected driver: string;
|
|
14
|
+
constructor(connection: Connection);
|
|
15
|
+
/**
|
|
16
|
+
* Create a new table
|
|
17
|
+
*/
|
|
18
|
+
create(tableName: string, callback: (table: Blueprint) => void): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Drop a table
|
|
21
|
+
*/
|
|
22
|
+
drop(tableName: string): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Drop a table if it exists
|
|
25
|
+
*/
|
|
26
|
+
dropIfExists(tableName: string): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Rename a table
|
|
29
|
+
*/
|
|
30
|
+
rename(from: string, to: string): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Determine if a table exists
|
|
33
|
+
*/
|
|
34
|
+
hasTable(tableName: string): Promise<boolean>;
|
|
35
|
+
/**
|
|
36
|
+
* Determine if a column exists on a table
|
|
37
|
+
*/
|
|
38
|
+
hasColumn(tableName: string, columnName: string): Promise<boolean>;
|
|
39
|
+
/**
|
|
40
|
+
* Modify an existing table
|
|
41
|
+
*/
|
|
42
|
+
table(tableName: string, callback: (table: Blueprint) => void): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Compile CREATE TABLE statement
|
|
45
|
+
*/
|
|
46
|
+
protected compileCreate(blueprint: Blueprint): string;
|
|
47
|
+
/**
|
|
48
|
+
* Compile column definition
|
|
49
|
+
*/
|
|
50
|
+
protected compileColumnDefinition(column: ColumnDefinition): string;
|
|
51
|
+
/**
|
|
52
|
+
* Get column type SQL
|
|
53
|
+
*/
|
|
54
|
+
protected getColumnType(column: ColumnDefinition): string;
|
|
55
|
+
/**
|
|
56
|
+
* Get SQLite column type
|
|
57
|
+
*/
|
|
58
|
+
protected getSQLiteColumnType(column: ColumnDefinition): string;
|
|
59
|
+
/**
|
|
60
|
+
* Get PostgreSQL column type
|
|
61
|
+
*/
|
|
62
|
+
protected getPostgresColumnType(column: ColumnDefinition): string;
|
|
63
|
+
/**
|
|
64
|
+
* Get MySQL column type
|
|
65
|
+
*/
|
|
66
|
+
protected getMySQLColumnType(column: ColumnDefinition): string;
|
|
67
|
+
/**
|
|
68
|
+
* Get auto increment clause
|
|
69
|
+
*/
|
|
70
|
+
protected getAutoIncrementClause(column: ColumnDefinition): string;
|
|
71
|
+
/**
|
|
72
|
+
* Get default value SQL
|
|
73
|
+
*/
|
|
74
|
+
protected getDefaultValue(value: any): string;
|
|
75
|
+
/**
|
|
76
|
+
* Compile ADD COLUMN statement
|
|
77
|
+
*/
|
|
78
|
+
protected compileAddColumn(tableName: string, column: ColumnDefinition): string;
|
|
79
|
+
/**
|
|
80
|
+
* Compile command (drop, rename, etc.)
|
|
81
|
+
*/
|
|
82
|
+
protected compileCommand(tableName: string, command: any): string | null;
|
|
83
|
+
/**
|
|
84
|
+
* Compile DROP COLUMN statement
|
|
85
|
+
*/
|
|
86
|
+
protected compileDropColumn(tableName: string, columns: string[]): string;
|
|
87
|
+
/**
|
|
88
|
+
* Compile DROP INDEX statement
|
|
89
|
+
*/
|
|
90
|
+
protected compileDropIndex(tableName: string, indexName: string): string;
|
|
91
|
+
/**
|
|
92
|
+
* Compile DROP FOREIGN KEY statement
|
|
93
|
+
*/
|
|
94
|
+
protected compileDropForeign(tableName: string, keyName: string): string;
|
|
95
|
+
/**
|
|
96
|
+
* Compile RENAME COLUMN statement
|
|
97
|
+
*/
|
|
98
|
+
protected compileRenameColumn(tableName: string, from: string, to: string): string;
|
|
99
|
+
/**
|
|
100
|
+
* Compile index creation
|
|
101
|
+
*/
|
|
102
|
+
protected compileIndex(tableName: string, index: any): string | null;
|
|
103
|
+
/**
|
|
104
|
+
* Compile foreign key creation
|
|
105
|
+
*/
|
|
106
|
+
protected compileForeignKey(tableName: string, fk: ForeignKeyDefinition): string | null;
|
|
107
|
+
/**
|
|
108
|
+
* Compile RENAME TABLE statement
|
|
109
|
+
*/
|
|
110
|
+
protected compileRename(from: string, to: string): string;
|
|
111
|
+
/**
|
|
112
|
+
* Compile has table check
|
|
113
|
+
*/
|
|
114
|
+
protected compileHasTable(tableName: string): string;
|
|
115
|
+
/**
|
|
116
|
+
* Compile has column check
|
|
117
|
+
*/
|
|
118
|
+
protected compileHasColumn(tableName: string, columnName: string): string;
|
|
119
|
+
/**
|
|
120
|
+
* Create index name
|
|
121
|
+
*/
|
|
122
|
+
protected createIndexName(tableName: string, columns: string[], type: string): string;
|
|
123
|
+
/**
|
|
124
|
+
* Create foreign key name
|
|
125
|
+
*/
|
|
126
|
+
protected createForeignKeyName(tableName: string, columns: string[]): string;
|
|
127
|
+
/**
|
|
128
|
+
* Wrap a table name
|
|
129
|
+
*/
|
|
130
|
+
protected wrapTable(table: string): string;
|
|
131
|
+
/**
|
|
132
|
+
* Wrap an identifier
|
|
133
|
+
*/
|
|
134
|
+
protected wrap(value: string): string;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=SchemaBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaBuilder.d.ts","sourceRoot":"","sources":["../../../src/Database/Migrations/SchemaBuilder.ts"],"names":[],"mappings":"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"}
|