jcc-express-mvc 1.8.7 → 1.8.21
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/Core/index.d.ts +4 -0
- package/Core/index.d.ts.map +1 -1
- package/Core/index.js +5 -0
- package/__tests__/Job.test.d.ts +2 -0
- package/__tests__/Job.test.d.ts.map +1 -0
- package/__tests__/Job.test.js +205 -0
- package/__tests__/MySqlSchemaBlueprint.test.d.ts +2 -0
- package/__tests__/MySqlSchemaBlueprint.test.d.ts.map +1 -0
- package/__tests__/MySqlSchemaBlueprint.test.js +55 -0
- package/__tests__/PostgresTranslator.test.d.ts +2 -0
- package/__tests__/PostgresTranslator.test.d.ts.map +1 -0
- package/__tests__/PostgresTranslator.test.js +82 -0
- package/__tests__/SQLiteTranslator.test.d.ts +2 -0
- package/__tests__/SQLiteTranslator.test.d.ts.map +1 -0
- package/__tests__/SQLiteTranslator.test.js +125 -0
- package/__tests__/SchemaAlterBlueprint.test.d.ts +2 -0
- package/__tests__/SchemaAlterBlueprint.test.d.ts.map +1 -0
- package/__tests__/SchemaAlterBlueprint.test.js +35 -0
- package/global.d.ts +3 -1
- package/index.d.ts +28 -3
- package/index.d.ts.map +1 -1
- package/index.js +33 -75
- package/lib/Application/Application.d.ts.map +1 -1
- package/lib/Application/Application.js +2 -2
- package/lib/Application/ApplicationBuilder.d.ts.map +1 -1
- package/lib/Application/ApplicationBuilder.js +22 -11
- package/lib/Auth/AuthMiddleware.d.ts.map +1 -1
- package/lib/Auth/AuthMiddleware.js +29 -12
- package/lib/Auth/index.d.ts +17 -3
- package/lib/Auth/index.d.ts.map +1 -1
- package/lib/Auth/index.js +128 -26
- package/lib/Auth/loginRateLimit.d.ts +6 -0
- package/lib/Auth/loginRateLimit.d.ts.map +1 -0
- package/lib/Auth/loginRateLimit.js +25 -0
- package/lib/Auth/refreshTokenStore.d.ts +24 -0
- package/lib/Auth/refreshTokenStore.d.ts.map +1 -0
- package/lib/Auth/refreshTokenStore.js +46 -0
- package/lib/Command-Line/DBCommand.d.ts.map +1 -1
- package/lib/Command-Line/DBCommand.js +9 -3
- package/lib/Command-Line/KeyGenerateCommand.d.ts +6 -0
- package/lib/Command-Line/KeyGenerateCommand.d.ts.map +1 -0
- package/lib/Command-Line/KeyGenerateCommand.js +47 -0
- package/lib/Command-Line/MakeCommand.d.ts +1 -0
- package/lib/Command-Line/MakeCommand.d.ts.map +1 -1
- package/lib/Command-Line/MakeCommand.js +36 -32
- package/lib/Command-Line/NodeArtisanCommand.d.ts +2 -0
- package/lib/Command-Line/NodeArtisanCommand.d.ts.map +1 -1
- package/lib/Command-Line/NodeArtisanCommand.js +24 -6
- package/lib/Command-Line/NodeTinker/Tinker.d.ts +5 -2
- package/lib/Command-Line/NodeTinker/Tinker.d.ts.map +1 -1
- package/lib/Command-Line/NodeTinker/Tinker.js +13 -3
- package/lib/Command-Line/WatchCommand.d.ts +29 -0
- package/lib/Command-Line/WatchCommand.d.ts.map +1 -0
- package/lib/Command-Line/WatchCommand.js +234 -0
- package/lib/Command-Line/files/Models.d.ts.map +1 -1
- package/lib/Command-Line/files/Models.js +67 -0
- package/lib/Console/Command.d.ts +18 -0
- package/lib/Console/Command.d.ts.map +1 -1
- package/lib/Console/Command.js +29 -0
- package/lib/Container/index.d.ts.map +1 -1
- package/lib/Container/index.js +22 -8
- package/lib/Database/Database.d.ts +21 -0
- package/lib/Database/Database.d.ts.map +1 -0
- package/lib/Database/Database.js +55 -0
- package/lib/Database/DatabaseServiceProvider.d.ts +22 -0
- package/lib/Database/DatabaseServiceProvider.d.ts.map +1 -0
- package/lib/Database/DatabaseServiceProvider.js +50 -0
- package/lib/Database/Drivers/KnexDriver.d.ts +13 -0
- package/lib/Database/Drivers/KnexDriver.d.ts.map +1 -0
- package/lib/Database/Drivers/KnexDriver.js +29 -0
- package/lib/Database/Drivers/MongooseDriver.d.ts +20 -0
- package/lib/Database/Drivers/MongooseDriver.d.ts.map +1 -0
- package/lib/Database/Drivers/MongooseDriver.js +57 -0
- package/lib/Database/Drivers/SequelizeDriver.d.ts +24 -0
- package/lib/Database/Drivers/SequelizeDriver.d.ts.map +1 -0
- package/lib/Database/Drivers/SequelizeDriver.js +82 -0
- package/lib/Database/index.d.ts +7 -0
- package/lib/Database/index.d.ts.map +1 -0
- package/lib/Database/index.js +11 -0
- package/lib/Database/interface.d.ts +14 -0
- package/lib/Database/interface.d.ts.map +1 -0
- package/lib/Database/interface.js +2 -0
- package/lib/Database/type.d.ts +18 -0
- package/lib/Database/type.d.ts.map +1 -0
- package/lib/Database/type.js +2 -0
- package/lib/Error/DisplayErrorCode.d.ts.map +1 -1
- package/lib/Error/DisplayErrorCode.js +27 -17
- package/lib/Error/MissMatchTokenException/index.d.ts +4 -0
- package/lib/Error/MissMatchTokenException/index.d.ts.map +1 -0
- package/lib/Error/MissMatchTokenException/index.js +9 -0
- package/lib/Error/SocialiteAuthError/SocialiteAuthError.d.ts +9 -0
- package/lib/Error/SocialiteAuthError/SocialiteAuthError.d.ts.map +1 -0
- package/lib/Error/SocialiteAuthError/SocialiteAuthError.js +17 -0
- package/lib/Global/helpers.d.ts.map +1 -1
- package/lib/Global/helpers.js +7 -6
- package/lib/Http/index.d.ts +3 -1
- package/lib/Http/index.d.ts.map +1 -1
- package/lib/Http/index.js +26 -5
- package/lib/Interface/index.d.ts +17 -3
- package/lib/Interface/index.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Builder.d.ts +12 -1
- package/lib/Jcc-eloquent/lib/Builder.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Builder.js +119 -5
- package/lib/Jcc-eloquent/lib/Database/index.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Database/index.js +2 -1
- package/lib/Jcc-eloquent/lib/Interfaces/index.d.ts +37 -2
- package/lib/Jcc-eloquent/lib/Interfaces/index.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Migration.d.ts +6 -0
- package/lib/Jcc-eloquent/lib/Migration.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Migration.js +24 -2
- package/lib/Jcc-eloquent/lib/Model.d.ts +24 -7
- package/lib/Jcc-eloquent/lib/Model.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Model.js +35 -2
- package/lib/Jcc-eloquent/lib/QueryBuilder.d.ts +2 -1
- package/lib/Jcc-eloquent/lib/QueryBuilder.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/QueryBuilder.js +10 -1
- package/lib/Jcc-eloquent/lib/Rollback.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Rollback.js +9 -2
- package/lib/Jcc-eloquent/lib/Schema/BaseSchemaEntity/index.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Schema/BaseSchemaEntity/index.js +3 -3
- package/lib/Jcc-eloquent/lib/Schema/BluePrint/index.d.ts +6 -2
- package/lib/Jcc-eloquent/lib/Schema/BluePrint/index.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Schema/BluePrint/index.js +41 -12
- package/lib/Jcc-eloquent/lib/Schema/Translator/Sqlite.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Schema/Translator/Sqlite.js +21 -3
- package/lib/Jcc-eloquent/lib/Schema/Translator/postgres.d.ts +1 -0
- package/lib/Jcc-eloquent/lib/Schema/Translator/postgres.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Schema/Translator/postgres.js +70 -14
- package/lib/Jcc-eloquent/lib/Schema/index.d.ts +12 -0
- package/lib/Jcc-eloquent/lib/Schema/index.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Schema/index.js +27 -6
- package/lib/Jcc-eloquent/lib/utils/index.d.ts +13 -0
- package/lib/Jcc-eloquent/lib/utils/index.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/utils/index.js +62 -0
- package/lib/Middleware/index.d.ts +1 -0
- package/lib/Middleware/index.d.ts.map +1 -1
- package/lib/Middleware/index.js +20 -8
- package/lib/Model/Sequelize.d.ts +3 -0
- package/lib/Model/Sequelize.d.ts.map +1 -0
- package/lib/Model/Sequelize.js +6 -0
- package/lib/Providers/RouteServiceProvider.d.ts.map +1 -1
- package/lib/Providers/RouteServiceProvider.js +3 -0
- package/lib/Providers/SessionServiceProvider.d.ts +12 -0
- package/lib/Providers/SessionServiceProvider.d.ts.map +1 -0
- package/lib/Providers/SessionServiceProvider.js +47 -0
- package/lib/Queue/Controllers/QueueControllers.d.ts +31 -0
- package/lib/Queue/Controllers/QueueControllers.d.ts.map +1 -0
- package/lib/Queue/Controllers/QueueControllers.js +126 -0
- package/lib/Queue/Drivers/DatabaseDriver.d.ts +6 -1
- package/lib/Queue/Drivers/DatabaseDriver.d.ts.map +1 -1
- package/lib/Queue/Drivers/DatabaseDriver.js +76 -21
- package/lib/Queue/Drivers/MemoryDriver.d.ts +17 -6
- package/lib/Queue/Drivers/MemoryDriver.d.ts.map +1 -1
- package/lib/Queue/Drivers/MemoryDriver.js +323 -14
- package/lib/Queue/Drivers/RedisDriver.d.ts +48 -0
- package/lib/Queue/Drivers/RedisDriver.d.ts.map +1 -0
- package/lib/Queue/Drivers/RedisDriver.js +533 -0
- package/lib/Queue/Job.d.ts +8 -0
- package/lib/Queue/Job.d.ts.map +1 -1
- package/lib/Queue/Job.js +25 -1
- package/lib/Queue/JobsLogger.d.ts.map +1 -1
- package/lib/Queue/JobsLogger.js +6 -3
- package/lib/Queue/Queue.d.ts +17 -0
- package/lib/Queue/Queue.d.ts.map +1 -1
- package/lib/Queue/Queue.js +146 -11
- package/lib/Queue/QueueServiceProvider.d.ts +6 -0
- package/lib/Queue/QueueServiceProvider.d.ts.map +1 -0
- package/lib/Queue/QueueServiceProvider.js +18 -0
- package/lib/Queue/Route/web.d.ts +2 -0
- package/lib/Queue/Route/web.d.ts.map +1 -0
- package/lib/Queue/Route/web.js +16 -0
- package/lib/Queue/index.d.ts +1 -0
- package/lib/Queue/index.d.ts.map +1 -1
- package/lib/Queue/index.js +3 -0
- package/lib/Queue/interface.d.ts +25 -0
- package/lib/Queue/interface.d.ts.map +1 -1
- package/lib/Queue/middleware/queueDashboardGuard.d.ts +7 -0
- package/lib/Queue/middleware/queueDashboardGuard.d.ts.map +1 -0
- package/lib/Queue/middleware/queueDashboardGuard.js +43 -0
- package/lib/Queue/type.d.ts +12 -1
- package/lib/Queue/type.d.ts.map +1 -1
- package/lib/Response/index.d.ts.map +1 -1
- package/lib/Response/index.js +6 -1
- package/lib/Routes/Route.d.ts +2 -2
- package/lib/Routes/Route.d.ts.map +1 -1
- package/lib/Routes/RouteBuilder.d.ts +2 -2
- package/lib/Routes/RouteBuilder.d.ts.map +1 -1
- package/lib/Security/CsrfMiddleware.d.ts +37 -0
- package/lib/Security/CsrfMiddleware.d.ts.map +1 -0
- package/lib/Security/CsrfMiddleware.js +85 -0
- package/lib/Security/MethodSpoofingMiddleware.d.ts +36 -0
- package/lib/Security/MethodSpoofingMiddleware.d.ts.map +1 -0
- package/lib/Security/MethodSpoofingMiddleware.js +51 -0
- package/lib/Security/index.d.ts +5 -0
- package/lib/Security/index.d.ts.map +1 -0
- package/lib/Security/index.js +7 -0
- package/lib/Session/DatabaseSession.d.ts +9 -3
- package/lib/Session/DatabaseSession.d.ts.map +1 -1
- package/lib/Session/DatabaseSession.js +38 -36
- package/lib/Session/ExpressJccSession.d.ts +23 -0
- package/lib/Session/ExpressJccSession.d.ts.map +1 -0
- package/lib/Session/ExpressJccSession.js +110 -0
- package/lib/Session/RedisSession.d.ts +2 -2
- package/lib/Session/RedisSession.d.ts.map +1 -1
- package/lib/Session/RedisSession.js +19 -5
- package/lib/Session/SessionManager.d.ts +18 -4
- package/lib/Session/SessionManager.d.ts.map +1 -1
- package/lib/Session/SessionManager.js +53 -17
- package/lib/Socialite/AbstractProvider.d.ts +60 -0
- package/lib/Socialite/AbstractProvider.d.ts.map +1 -0
- package/lib/Socialite/AbstractProvider.js +136 -0
- package/lib/Socialite/Drivers/facebook/FacebookDriver.d.ts +9 -0
- package/lib/Socialite/Drivers/facebook/FacebookDriver.d.ts.map +1 -0
- package/lib/Socialite/Drivers/facebook/FacebookDriver.js +40 -0
- package/lib/Socialite/Drivers/facebook/FacebookProvider.d.ts +15 -0
- package/lib/Socialite/Drivers/facebook/FacebookProvider.d.ts.map +1 -0
- package/lib/Socialite/Drivers/facebook/FacebookProvider.js +28 -0
- package/lib/Socialite/Drivers/github/GitHubDriver.d.ts +9 -0
- package/lib/Socialite/Drivers/github/GitHubDriver.d.ts.map +1 -0
- package/lib/Socialite/Drivers/github/GitHubDriver.js +54 -0
- package/lib/Socialite/Drivers/github/GitHubProvider.d.ts +15 -0
- package/lib/Socialite/Drivers/github/GitHubProvider.d.ts.map +1 -0
- package/lib/Socialite/Drivers/github/GitHubProvider.js +28 -0
- package/lib/Socialite/Drivers/gitlab/GitLabDriver.d.ts +10 -0
- package/lib/Socialite/Drivers/gitlab/GitLabDriver.d.ts.map +1 -0
- package/lib/Socialite/Drivers/gitlab/GitLabDriver.js +37 -0
- package/lib/Socialite/Drivers/gitlab/GitLabProvider.d.ts +15 -0
- package/lib/Socialite/Drivers/gitlab/GitLabProvider.d.ts.map +1 -0
- package/lib/Socialite/Drivers/gitlab/GitLabProvider.js +28 -0
- package/lib/Socialite/Drivers/google/GoogleDriver.d.ts +9 -0
- package/lib/Socialite/Drivers/google/GoogleDriver.d.ts.map +1 -0
- package/lib/Socialite/Drivers/google/GoogleDriver.js +39 -0
- package/lib/Socialite/Drivers/google/GoogleProvider.d.ts +15 -0
- package/lib/Socialite/Drivers/google/GoogleProvider.d.ts.map +1 -0
- package/lib/Socialite/Drivers/google/GoogleProvider.js +28 -0
- package/lib/Socialite/Drivers/slack/SlackDriver.d.ts +9 -0
- package/lib/Socialite/Drivers/slack/SlackDriver.d.ts.map +1 -0
- package/lib/Socialite/Drivers/slack/SlackDriver.js +41 -0
- package/lib/Socialite/Drivers/slack/SlackProvider.d.ts +16 -0
- package/lib/Socialite/Drivers/slack/SlackProvider.d.ts.map +1 -0
- package/lib/Socialite/Drivers/slack/SlackProvider.js +37 -0
- package/lib/Socialite/Drivers/twitter/TwitterDriver.d.ts +9 -0
- package/lib/Socialite/Drivers/twitter/TwitterDriver.d.ts.map +1 -0
- package/lib/Socialite/Drivers/twitter/TwitterDriver.js +57 -0
- package/lib/Socialite/Drivers/twitter/TwitterProvider.d.ts +16 -0
- package/lib/Socialite/Drivers/twitter/TwitterProvider.d.ts.map +1 -0
- package/lib/Socialite/Drivers/twitter/TwitterProvider.js +38 -0
- package/lib/Socialite/SocialUser.d.ts +42 -0
- package/lib/Socialite/SocialUser.d.ts.map +1 -0
- package/lib/Socialite/SocialUser.js +116 -0
- package/lib/Socialite/Socialite.d.ts +13 -0
- package/lib/Socialite/Socialite.d.ts.map +1 -0
- package/lib/Socialite/Socialite.js +41 -0
- package/lib/Socialite/SocialiteProvider.d.ts +9 -0
- package/lib/Socialite/SocialiteProvider.d.ts.map +1 -0
- package/lib/Socialite/SocialiteProvider.js +15 -0
- package/lib/Socialite/config.d.ts +7 -0
- package/lib/Socialite/config.d.ts.map +1 -0
- package/lib/Socialite/config.js +44 -0
- package/lib/Socialite/constant.d.ts +18 -0
- package/lib/Socialite/constant.d.ts.map +1 -0
- package/lib/Socialite/constant.js +20 -0
- package/lib/Socialite/index.d.ts +13 -0
- package/lib/Socialite/index.d.ts.map +1 -0
- package/lib/Socialite/index.js +25 -0
- package/lib/Socialite/types.d.ts +13 -0
- package/lib/Socialite/types.d.ts.map +1 -0
- package/lib/Socialite/types.js +2 -0
- package/lib/Templating-engine/benchmark.d.ts +7 -0
- package/lib/Templating-engine/benchmark.d.ts.map +1 -0
- package/lib/Templating-engine/benchmark.js +44 -0
- package/lib/Templating-engine/engineHelper.d.ts +37 -8
- package/lib/Templating-engine/engineHelper.d.ts.map +1 -1
- package/lib/Templating-engine/engineHelper.js +203 -26
- package/lib/Templating-engine/errors.d.ts +15 -0
- package/lib/Templating-engine/errors.d.ts.map +1 -0
- package/lib/Templating-engine/errors.js +35 -0
- package/lib/Templating-engine/expressions.d.ts +24 -0
- package/lib/Templating-engine/expressions.d.ts.map +1 -1
- package/lib/Templating-engine/expressions.js +27 -5
- package/lib/Templating-engine/index.d.ts +87 -17
- package/lib/Templating-engine/index.d.ts.map +1 -1
- package/lib/Templating-engine/index.js +701 -96
- package/lib/Templating-engine/plugins.d.ts +30 -0
- package/lib/Templating-engine/plugins.d.ts.map +1 -0
- package/lib/Templating-engine/plugins.js +47 -0
- package/lib/Type/index.d.ts +1 -0
- package/lib/Type/index.d.ts.map +1 -1
- package/lib/Validation/Validator/CustomValidation.d.ts.map +1 -1
- package/lib/Validation/Validator/CustomValidation.js +2 -2
- package/lib/Validation/Validator/helper.d.ts.map +1 -1
- package/lib/Validation/Validator/helper.js +8 -1
- package/lib/util/index.d.ts +42 -1
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +154 -17
- package/package.json +1 -1
|
@@ -86,7 +86,7 @@ class QueryBuilder extends ModelEvent_1.ModelEvent {
|
|
|
86
86
|
* Add a where exists clause.
|
|
87
87
|
*/
|
|
88
88
|
// public static whereExists(
|
|
89
|
-
// subquery: ((qb: Knex.QueryBuilder) => void) | Knex.QueryBuilder
|
|
89
|
+
// subquery: ((qb: type Knex.QueryBuilder) => void) | type Knex.QueryBuilder
|
|
90
90
|
// ): typeof QueryBuilder {
|
|
91
91
|
// this.query().whereExists(subquery);
|
|
92
92
|
// return this;
|
|
@@ -578,6 +578,15 @@ class QueryBuilder extends ModelEvent_1.ModelEvent {
|
|
|
578
578
|
return this.query().firstRaw();
|
|
579
579
|
}
|
|
580
580
|
static async paginate(req, perPage = 15) { }
|
|
581
|
+
static async findOrCreate(where, data) {
|
|
582
|
+
const result = await this.query().where(where).first();
|
|
583
|
+
if (result) {
|
|
584
|
+
return result;
|
|
585
|
+
}
|
|
586
|
+
else {
|
|
587
|
+
return this.query().insert(data);
|
|
588
|
+
}
|
|
589
|
+
}
|
|
581
590
|
}
|
|
582
591
|
exports.QueryBuilder = QueryBuilder;
|
|
583
592
|
QueryBuilder.softDelete = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rollback.d.ts","sourceRoot":"","sources":["../../../../jcc-express-mvc/lib/Jcc-eloquent/lib/Rollback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"Rollback.d.ts","sourceRoot":"","sources":["../../../../jcc-express-mvc/lib/Jcc-eloquent/lib/Rollback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,qBAAa,QAAS,SAAQ,OAAO;IACnC;;;;;OAKG;IACG,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAQlD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAO1D;;;;;;;OAOG;IACG,QAAQ,CACZ,KAAK,EAAE,MAAM,YAAI,EACjB,aAAa,EAAE,MAAM,EACrB,GAAG,GAAE,MAAa,GACjB,OAAO,CAAC,GAAG,CAAC;IAwCf,mBAAmB,CAAC,SAAS,EAAE,MAAM;CAOtC;AAED,eAAO,MAAM,QAAQ,UApDV,MAAM,6BACE,MAAM,QAChB,MAAM,KACV,OAAO,CAAC,GAAG,CAiDoD,CAAC"}
|
|
@@ -5,6 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.rollback = exports.Rollback = void 0;
|
|
7
7
|
const Builder_1 = require("./Builder");
|
|
8
|
+
const Schema_1 = require("./Schema");
|
|
9
|
+
const Migration_1 = require("./Migration");
|
|
8
10
|
const colors_1 = __importDefault(require("colors"));
|
|
9
11
|
class Rollback extends Builder_1.Builder {
|
|
10
12
|
/**
|
|
@@ -47,8 +49,13 @@ class Rollback extends Builder_1.Builder {
|
|
|
47
49
|
if (await this.removeMigration(migratedFile.migration)) {
|
|
48
50
|
const { Migration } = this.importMigrationFile(`${migrationPath}/${migratedFile.migration}`);
|
|
49
51
|
const instance = new Migration();
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
+
Schema_1.Schema.clearLastGeneratedSql();
|
|
53
|
+
const returned = instance.down();
|
|
54
|
+
const statements = (0, Migration_1.getMigrationStatements)(returned);
|
|
55
|
+
let result;
|
|
56
|
+
for (const sql of statements) {
|
|
57
|
+
result = await this.runQuery(sql);
|
|
58
|
+
}
|
|
52
59
|
if (result) {
|
|
53
60
|
logs.push(`${migratedFile.migration} rollback succesfully`);
|
|
54
61
|
console.log(colors_1.default.green(`${migratedFile.migration} rollback succesfully`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../jcc-express-mvc/lib/Jcc-eloquent/lib/Schema/BaseSchemaEntity/index.ts"],"names":[],"mappings":"AAGA,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,UAAU,SAAoD;IACrE,MAAM,CAAC,UAAU,SAC8D;IAC/E,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAM;IACnC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAM;IAEvC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAgC7B;IAEF,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../jcc-express-mvc/lib/Jcc-eloquent/lib/Schema/BaseSchemaEntity/index.ts"],"names":[],"mappings":"AAGA,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,UAAU,SAAoD;IACrE,MAAM,CAAC,UAAU,SAC8D;IAC/E,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAM;IACnC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAM;IAEvC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAgC7B;IAEF,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAoBjC;IAEF;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,MAAW,GAAG,MAAM;IAmB5E;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IASzC;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAc7C;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAUxC;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,IAAI;IAK1B;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAgD/D"}
|
|
@@ -49,8 +49,9 @@ class BaseSchemaEntity {
|
|
|
49
49
|
if (this.columns.length === 0) {
|
|
50
50
|
throw new Error("No columns available to modify");
|
|
51
51
|
}
|
|
52
|
-
const
|
|
53
|
-
|
|
52
|
+
const lastIndex = this.columns.length - 1;
|
|
53
|
+
const column = this.columns[lastIndex];
|
|
54
|
+
return (this.columns[lastIndex] = `${str} ${column}`);
|
|
54
55
|
}
|
|
55
56
|
/**
|
|
56
57
|
* Resets the schema by clearing the columns and constraints arrays.
|
|
@@ -159,5 +160,4 @@ BaseSchemaEntity.alterKeywords = [
|
|
|
159
160
|
"AUTO_INCREMENT",
|
|
160
161
|
"DISABLE KEYS",
|
|
161
162
|
"ENABLE KEYS",
|
|
162
|
-
"AFTER",
|
|
163
163
|
];
|
|
@@ -163,9 +163,12 @@ export declare class Blueprint {
|
|
|
163
163
|
*/
|
|
164
164
|
first(): this;
|
|
165
165
|
/**
|
|
166
|
-
* Adds an index
|
|
166
|
+
* Adds an index (Laravel-style):
|
|
167
|
+
* - index("email")
|
|
168
|
+
* - index(["email", "status"])
|
|
169
|
+
* - index("email", "idx_users_email")
|
|
167
170
|
*/
|
|
168
|
-
index(
|
|
171
|
+
index(columns?: string | string[], indexName?: string): this;
|
|
169
172
|
/**
|
|
170
173
|
* Adds a TIME column to the schema.
|
|
171
174
|
*/
|
|
@@ -269,6 +272,7 @@ export declare class Blueprint {
|
|
|
269
272
|
autoIncrement(): this;
|
|
270
273
|
/**
|
|
271
274
|
* Makes the column unsigned.
|
|
275
|
+
* MySQL requires TYPE UNSIGNED NOT NULL — not TYPE NOT NULL UNSIGNED (append was invalid).
|
|
272
276
|
*/
|
|
273
277
|
unsigned(): this;
|
|
274
278
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../jcc-express-mvc/lib/Jcc-eloquent/lib/Schema/BluePrint/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../jcc-express-mvc/lib/Jcc-eloquent/lib/Schema/BluePrint/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -339,18 +339,33 @@ class Blueprint {
|
|
|
339
339
|
return this;
|
|
340
340
|
}
|
|
341
341
|
/**
|
|
342
|
-
* Adds an index
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
342
|
+
* Adds an index (Laravel-style):
|
|
343
|
+
* - index("email")
|
|
344
|
+
* - index(["email", "status"])
|
|
345
|
+
* - index("email", "idx_users_email")
|
|
346
|
+
*/
|
|
347
|
+
index(columns, indexName) {
|
|
348
|
+
if (columns === undefined) {
|
|
349
|
+
// Chain style: table.integer("last_activity").index()
|
|
350
|
+
// Must be a table-level INDEX clause, not "INT NOT NULL INDEX" (invalid in MySQL).
|
|
351
|
+
if (BaseSchemaEntity_1.BaseSchemaEntity.columns.length === 0) {
|
|
352
|
+
throw new Error("index() chain requires a preceding column definition");
|
|
353
|
+
}
|
|
354
|
+
const lastCol = BaseSchemaEntity_1.BaseSchemaEntity.columns[BaseSchemaEntity_1.BaseSchemaEntity.columns.length - 1];
|
|
355
|
+
const colMatch = lastCol.match(/^(`?\w+`?)\s/);
|
|
356
|
+
const colName = colMatch ? colMatch[1].replace(/`/g, "") : "";
|
|
357
|
+
if (!colName) {
|
|
358
|
+
throw new Error("Could not parse column name for index()");
|
|
359
|
+
}
|
|
360
|
+
const table = this.tableName || "table";
|
|
361
|
+
const name = indexName || `idx_${table}_${colName}`;
|
|
362
|
+
BaseSchemaEntity_1.BaseSchemaEntity.columns.push(`INDEX ${name} (${colName})`);
|
|
363
|
+
return this;
|
|
353
364
|
}
|
|
365
|
+
const columnList = Array.isArray(columns) ? columns : [columns];
|
|
366
|
+
const table = this.tableName || "table";
|
|
367
|
+
const name = indexName || `idx_${table}_${columnList.join("_")}`;
|
|
368
|
+
BaseSchemaEntity_1.BaseSchemaEntity.columns.push(`INDEX ${name} (${columnList.join(", ")})`);
|
|
354
369
|
return this;
|
|
355
370
|
}
|
|
356
371
|
//start
|
|
@@ -372,7 +387,7 @@ class Blueprint {
|
|
|
372
387
|
* Adds a SMALLINT column to the schema.
|
|
373
388
|
*/
|
|
374
389
|
smallInteger(column) {
|
|
375
|
-
BaseSchemaEntity_1.BaseSchemaEntity.columns.push(`${column}SMALLINT NOT NULL`);
|
|
390
|
+
BaseSchemaEntity_1.BaseSchemaEntity.columns.push(`${column} SMALLINT NOT NULL`);
|
|
376
391
|
return this;
|
|
377
392
|
}
|
|
378
393
|
/**
|
|
@@ -584,8 +599,22 @@ class Blueprint {
|
|
|
584
599
|
}
|
|
585
600
|
/**
|
|
586
601
|
* Makes the column unsigned.
|
|
602
|
+
* MySQL requires TYPE UNSIGNED NOT NULL — not TYPE NOT NULL UNSIGNED (append was invalid).
|
|
587
603
|
*/
|
|
588
604
|
unsigned() {
|
|
605
|
+
if (BaseSchemaEntity_1.BaseSchemaEntity.columns.length === 0) {
|
|
606
|
+
throw new Error("No columns available to modify");
|
|
607
|
+
}
|
|
608
|
+
const lastIndex = BaseSchemaEntity_1.BaseSchemaEntity.columns.length - 1;
|
|
609
|
+
const col = BaseSchemaEntity_1.BaseSchemaEntity.columns[lastIndex];
|
|
610
|
+
if (/\bUNSIGNED\b/i.test(col)) {
|
|
611
|
+
return this;
|
|
612
|
+
}
|
|
613
|
+
const replaced = col.replace(/\b(INT|BIGINT|SMALLINT|MEDIUMINT|TINYINT)(\(\d+\))? NOT NULL\b/i, "$1$2 UNSIGNED NOT NULL");
|
|
614
|
+
if (replaced !== col) {
|
|
615
|
+
BaseSchemaEntity_1.BaseSchemaEntity.columns[lastIndex] = replaced;
|
|
616
|
+
return this;
|
|
617
|
+
}
|
|
589
618
|
BaseSchemaEntity_1.BaseSchemaEntity.AddQueryToLastIndex("UNSIGNED");
|
|
590
619
|
return this;
|
|
591
620
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sqlite.d.ts","sourceRoot":"","sources":["../../../../../../jcc-express-mvc/lib/Jcc-eloquent/lib/Schema/Translator/Sqlite.ts"],"names":[],"mappings":"AAKA,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,eAAe,CAoI5B;IAEF,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAuDzC;;;;OAIG;WACW,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"Sqlite.d.ts","sourceRoot":"","sources":["../../../../../../jcc-express-mvc/lib/Jcc-eloquent/lib/Schema/Translator/Sqlite.ts"],"names":[],"mappings":"AAKA,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,eAAe,CAoI5B;IAEF,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAuDzC;;;;OAIG;WACW,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAkCjD;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAOnC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAsCnC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,0BAA0B;CA4C1C"}
|
|
@@ -81,7 +81,11 @@ class SQLiteTranslator {
|
|
|
81
81
|
.replace(/,\s*\)/g, ")") // remove trailing commas in parentheses
|
|
82
82
|
.replace(/\s+ON\s*,/g, ",") // clean up malformed ON clauses
|
|
83
83
|
.replace(/\s+ON\s*\)/g, ")"); // clean up malformed ON clauses at end of parentheses
|
|
84
|
-
|
|
84
|
+
// FK reordering is only relevant for CREATE TABLE statements.
|
|
85
|
+
if (/^\s*CREATE\s+TABLE\b/i.test(sqliteSql)) {
|
|
86
|
+
return this.SQLiteFKFixer(sqliteSql);
|
|
87
|
+
}
|
|
88
|
+
return sqliteSql;
|
|
85
89
|
}
|
|
86
90
|
/**
|
|
87
91
|
* Converts MySQL CONCAT() function to SQLite concatenation operator ||
|
|
@@ -141,6 +145,20 @@ class SQLiteTranslator {
|
|
|
141
145
|
"3. DROP old table\n" +
|
|
142
146
|
"4. RENAME new table */\n" +
|
|
143
147
|
"-- ALTER TABLE $1 attempted to modify column $2 to $3");
|
|
148
|
+
sql = sql.replace(/ALTER\s+TABLE\s+(\w+)\s+CHANGE\s+COLUMN\s+(\w+)\s+(\w+)\s+([^;]+)/gi, "/* SQLite doesn't support CHANGE COLUMN directly. Use: \n" +
|
|
149
|
+
"1. CREATE new table with desired schema\n" +
|
|
150
|
+
"2. INSERT data from old table\n" +
|
|
151
|
+
"3. DROP old table\n" +
|
|
152
|
+
"4. RENAME new table */\n" +
|
|
153
|
+
"-- ALTER TABLE $1 attempted to change column $2 to $3 $4");
|
|
154
|
+
sql = sql.replace(/ALTER\s+TABLE\s+(\w+)\s+DROP\s+COLUMN\s+(\w+)\s*;?/gi, "/* SQLite supports DROP COLUMN only in newer versions and with constraints caveats. " +
|
|
155
|
+
"Safer cross-version approach is table rebuild. */\n" +
|
|
156
|
+
"-- ALTER TABLE $1 attempted to drop column $2");
|
|
157
|
+
sql = sql.replace(/ALTER\s+TABLE\s+(\w+)\s+DROP\s+INDEX\s+(\w+)\s*;?/gi, "/* SQLite drops indexes with standalone DROP INDEX, not ALTER TABLE DROP INDEX. */\n" +
|
|
158
|
+
"DROP INDEX IF EXISTS $2;");
|
|
159
|
+
sql = sql.replace(/ALTER\s+TABLE\s+(\w+)\s+DROP\s+FOREIGN\s+KEY\s+(\w+)\s*;?/gi, "/* SQLite doesn't support dropping a foreign key constraint directly. " +
|
|
160
|
+
"Rebuild table without the constraint. */\n" +
|
|
161
|
+
"-- ALTER TABLE $1 attempted to drop foreign key $2");
|
|
144
162
|
return sql;
|
|
145
163
|
}
|
|
146
164
|
}
|
|
@@ -188,9 +206,9 @@ SQLiteTranslator.conversionRules = [
|
|
|
188
206
|
// Character set and collation
|
|
189
207
|
{ pattern: /CHARACTER\s+SET\s+\w+/gi, replacement: "" },
|
|
190
208
|
{ pattern: /COLLATE\s+\w+/gi, replacement: "" },
|
|
191
|
-
// Key declarations
|
|
209
|
+
// Key declarations (single or multi-column)
|
|
192
210
|
{
|
|
193
|
-
pattern: /\bKEY\s+`?(
|
|
211
|
+
pattern: /\bKEY\s+`?([a-zA-Z0-9_]+)`?\s+\(([^)]+)\)/gi,
|
|
194
212
|
replacement: "INDEX $1($2)",
|
|
195
213
|
},
|
|
196
214
|
// UNSIGNED attribute (not supported in SQLite)
|
|
@@ -5,6 +5,7 @@ export declare class PostgresTranslator {
|
|
|
5
5
|
* @returns The PostgreSQL-compatible query string.
|
|
6
6
|
*/
|
|
7
7
|
private static replaceQuestionMarks;
|
|
8
|
+
private static normalizeCommon;
|
|
8
9
|
private static translateCreateTable;
|
|
9
10
|
/**
|
|
10
11
|
* Translates MySQL ALTER TABLE statements to PostgreSQL.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../../../../jcc-express-mvc/lib/Jcc-eloquent/lib/Schema/Translator/postgres.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAkB;IAC7B;;;;OAIG;IAEH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAKnC,OAAO,CAAC,MAAM,CAAC,oBAAoB;
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../../../../jcc-express-mvc/lib/Jcc-eloquent/lib/Schema/Translator/postgres.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAkB;IAC7B;;;;OAIG;IAEH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAKnC,OAAO,CAAC,MAAM,CAAC,eAAe;IA6D9B,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAcnC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAyElC;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAaxC"}
|
|
@@ -11,17 +11,18 @@ class PostgresTranslator {
|
|
|
11
11
|
let counter = 1;
|
|
12
12
|
return query.replace(/\?/g, () => `$${counter++}`);
|
|
13
13
|
}
|
|
14
|
-
static
|
|
15
|
-
//
|
|
14
|
+
static normalizeCommon(query) {
|
|
15
|
+
// Remove MySQL identifier quoting.
|
|
16
|
+
query = query.replace(/`([^`]+)`/g, "$1");
|
|
16
17
|
// Handle AUTO_INCREMENT columns first (order matters)
|
|
17
18
|
query = query.replace(/\bBIGINT\s+UNSIGNED\s+AUTO_INCREMENT\b/gi, "BIGSERIAL");
|
|
18
19
|
query = query.replace(/\bINT\s+UNSIGNED\s+AUTO_INCREMENT\b/gi, "SERIAL");
|
|
19
20
|
query = query.replace(/\bBIGINT\s+AUTO_INCREMENT\b/gi, "BIGSERIAL");
|
|
20
21
|
query = query.replace(/\bINT\s+AUTO_INCREMENT\b/gi, "SERIAL");
|
|
21
22
|
query = query.replace(/\b(MEDIUMINT|SMALLINT)\s+AUTO_INCREMENT\b/gi, "SERIAL");
|
|
22
|
-
// Remove UNSIGNED keyword (PostgreSQL doesn't
|
|
23
|
+
// Remove UNSIGNED keyword (PostgreSQL doesn't support unsigned types)
|
|
23
24
|
query = query.replace(/\s+UNSIGNED\b/gi, "");
|
|
24
|
-
// Replace remaining AUTO_INCREMENT (
|
|
25
|
+
// Replace remaining AUTO_INCREMENT (safety fallback)
|
|
25
26
|
query = query.replace(/\s+AUTO_INCREMENT\b/gi, "");
|
|
26
27
|
// Data type mappings
|
|
27
28
|
query = query.replace(/\bTINYINT\b/gi, "SMALLINT");
|
|
@@ -30,20 +31,29 @@ class PostgresTranslator {
|
|
|
30
31
|
query = query.replace(/\bBIGINT\b/gi, "BIGINT");
|
|
31
32
|
query = query.replace(/\bFLOAT\b/gi, "REAL");
|
|
32
33
|
query = query.replace(/\bDOUBLE\b/gi, "DOUBLE PRECISION");
|
|
33
|
-
// BLOB and binary types
|
|
34
|
-
query = query.replace(/\b(TINYBLOB|BLOB|MEDIUMBLOB|LONGBLOB|BINARY|VARBINARY)\b/gi, "BYTEA");
|
|
35
|
-
// Date/time types
|
|
36
34
|
query = query.replace(/\bDATETIME\b/gi, "TIMESTAMP");
|
|
37
|
-
// Text types
|
|
38
35
|
query = query.replace(/\b(TINYTEXT|MEDIUMTEXT|LONGTEXT)\b/gi, "TEXT");
|
|
36
|
+
query = query.replace(/\b(TINYBLOB|BLOB|MEDIUMBLOB|LONGBLOB|BINARY|VARBINARY)\b/gi, "BYTEA");
|
|
39
37
|
// Remove MySQL-specific clauses
|
|
40
38
|
query = query.replace(/\s+ON\s+UPDATE\s+CURRENT_TIMESTAMP\b/gi, "");
|
|
41
|
-
//
|
|
39
|
+
// MySQL unique-key syntax inside CREATE TABLE.
|
|
40
|
+
query = query.replace(/\bUNIQUE\s+KEY\s+([a-zA-Z0-9_]+)\s*\(([^)]+)\)/gi, "CONSTRAINT $1 UNIQUE ($2)");
|
|
41
|
+
// PostgreSQL BOOLEAN defaults must be TRUE/FALSE (not 1/0).
|
|
42
|
+
query = query.replace(/\bBOOLEAN\b([^,;]*?)\bDEFAULT\s+([01])\b/gi, (_match, between, bit) => `BOOLEAN${between}DEFAULT ${bit === "1" ? "TRUE" : "FALSE"}`);
|
|
43
|
+
// Table options not supported in PostgreSQL
|
|
42
44
|
query = query.replace(/\s+ENGINE\s*=\s*\w+/gi, "");
|
|
43
45
|
query = query.replace(/\s+DEFAULT\s+CHARSET\s*=\s*\w+/gi, "");
|
|
44
46
|
query = query.replace(/\s+COLLATE\s*=\s*\w+/gi, "");
|
|
47
|
+
return query;
|
|
48
|
+
}
|
|
49
|
+
static translateCreateTable(query) {
|
|
50
|
+
query = this.normalizeCommon(query);
|
|
51
|
+
// MySQL inline non-unique index definitions are not valid in PostgreSQL CREATE TABLE.
|
|
52
|
+
// Remove these clauses to keep CREATE TABLE executable.
|
|
53
|
+
query = query.replace(/\s*,\s*(?:INDEX|KEY)\s+[a-zA-Z0-9_]+\s*\([^)]+\)/gi, "");
|
|
45
54
|
// Clean up extra whitespace
|
|
46
55
|
query = query.replace(/\s+/g, " ").trim();
|
|
56
|
+
query = query.replace(/,\s*\)/g, ")");
|
|
47
57
|
return query;
|
|
48
58
|
}
|
|
49
59
|
/**
|
|
@@ -52,9 +62,55 @@ class PostgresTranslator {
|
|
|
52
62
|
* @returns The PostgreSQL-compatible query string.
|
|
53
63
|
*/
|
|
54
64
|
static translateAlterTable(query) {
|
|
55
|
-
|
|
56
|
-
//
|
|
57
|
-
|
|
65
|
+
query = this.normalizeCommon(query);
|
|
66
|
+
// DROP FOREIGN KEY name -> DROP CONSTRAINT name
|
|
67
|
+
query = query.replace(/\bDROP\s+FOREIGN\s+KEY\s+([a-zA-Z0-9_]+)/gi, "DROP CONSTRAINT $1");
|
|
68
|
+
// DROP INDEX name -> DROP CONSTRAINT name (for unique/index-like constraints emitted by schema builder)
|
|
69
|
+
query = query.replace(/\bDROP\s+INDEX\s+([a-zA-Z0-9_]+)/gi, "DROP CONSTRAINT $1");
|
|
70
|
+
// CHANGE COLUMN old new TYPE ... -> RENAME + TYPE (+ null/default when present)
|
|
71
|
+
query = query.replace(/\bCHANGE\s+COLUMN\s+([a-zA-Z0-9_]+)\s+([a-zA-Z0-9_]+)\s+([A-Z]+(?:\([^)]+\))?)([^,;]*)/gi, (_match, oldCol, newCol, type, tail) => {
|
|
72
|
+
const ops = [
|
|
73
|
+
`RENAME COLUMN ${oldCol} TO ${newCol}`,
|
|
74
|
+
`ALTER COLUMN ${newCol} TYPE ${type}`,
|
|
75
|
+
];
|
|
76
|
+
const t = String(tail || "");
|
|
77
|
+
if (/\bNOT\s+NULL\b/i.test(t)) {
|
|
78
|
+
ops.push(`ALTER COLUMN ${newCol} SET NOT NULL`);
|
|
79
|
+
}
|
|
80
|
+
else if (/\bNULL\b/i.test(t)) {
|
|
81
|
+
ops.push(`ALTER COLUMN ${newCol} DROP NOT NULL`);
|
|
82
|
+
}
|
|
83
|
+
const defaultMatch = t.match(/\bDEFAULT\s+([^\s,;]+)/i);
|
|
84
|
+
if (defaultMatch?.[1]) {
|
|
85
|
+
ops.push(`ALTER COLUMN ${newCol} SET DEFAULT ${defaultMatch[1]}`);
|
|
86
|
+
}
|
|
87
|
+
return ops.join(", ");
|
|
88
|
+
});
|
|
89
|
+
// MODIFY COLUMN col TYPE ... -> ALTER COLUMN statements (+ null/default when present)
|
|
90
|
+
query = query.replace(/\bMODIFY\s+COLUMN\s+([a-zA-Z0-9_]+)\s+([A-Z]+(?:\([^)]+\))?)([^,;]*)/gi, (_match, col, type, tail) => {
|
|
91
|
+
const ops = [`ALTER COLUMN ${col} TYPE ${type}`];
|
|
92
|
+
const t = String(tail || "");
|
|
93
|
+
if (/\bNOT\s+NULL\b/i.test(t)) {
|
|
94
|
+
ops.push(`ALTER COLUMN ${col} SET NOT NULL`);
|
|
95
|
+
}
|
|
96
|
+
else if (/\bNULL\b/i.test(t)) {
|
|
97
|
+
ops.push(`ALTER COLUMN ${col} DROP NOT NULL`);
|
|
98
|
+
}
|
|
99
|
+
const defaultMatch = t.match(/\bDEFAULT\s+([^\s,;]+)/i);
|
|
100
|
+
if (defaultMatch?.[1]) {
|
|
101
|
+
ops.push(`ALTER COLUMN ${col} SET DEFAULT ${defaultMatch[1]}`);
|
|
102
|
+
}
|
|
103
|
+
return ops.join(", ");
|
|
104
|
+
});
|
|
105
|
+
// AFTER/FIRST are MySQL-only column positioning hints.
|
|
106
|
+
query = query.replace(/\s+AFTER\s+[a-zA-Z0-9_]+/gi, "");
|
|
107
|
+
query = query.replace(/\s+FIRST\b/gi, "");
|
|
108
|
+
// Boolean defaults in ALTER statements as well.
|
|
109
|
+
query = query.replace(/\bALTER\s+COLUMN\s+([a-zA-Z0-9_]+)\s+SET\s+DEFAULT\s+([01])\b/gi, (_match, col, bit) => `ALTER COLUMN ${col} SET DEFAULT ${bit === "1" ? "TRUE" : "FALSE"}`);
|
|
110
|
+
// Clean up extra whitespace
|
|
111
|
+
query = query.replace(/\s+/g, " ").trim();
|
|
112
|
+
query = query.replace(/,\s*;/g, ";");
|
|
113
|
+
return query;
|
|
58
114
|
}
|
|
59
115
|
/**
|
|
60
116
|
* Main translation method that handles both CREATE TABLE and ALTER TABLE statements.
|
|
@@ -70,8 +126,8 @@ class PostgresTranslator {
|
|
|
70
126
|
else if (trimmedQuery.toUpperCase().startsWith("ALTER TABLE")) {
|
|
71
127
|
return this.translateAlterTable(this.replaceQuestionMarks(trimmedQuery));
|
|
72
128
|
}
|
|
73
|
-
// For other query types,
|
|
74
|
-
return this.replaceQuestionMarks(trimmedQuery);
|
|
129
|
+
// For other query types, replace placeholders and normalize identifier quoting.
|
|
130
|
+
return this.replaceQuestionMarks(trimmedQuery).replace(/`([^`]+)`/g, "$1");
|
|
75
131
|
}
|
|
76
132
|
}
|
|
77
133
|
exports.PostgresTranslator = PostgresTranslator;
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { Blueprint } from "./BluePrint";
|
|
2
2
|
export declare class Schema {
|
|
3
|
+
/**
|
|
4
|
+
* SQL emitted by Schema.create/table/drop/… in order, so migrations can omit
|
|
5
|
+
* `return` and still run; multiple calls in one `up()`/`down()` are all kept.
|
|
6
|
+
*/
|
|
7
|
+
private static generatedSqlBatch;
|
|
8
|
+
/** Clear before running a migration `up`/`down` to avoid stale SQL. */
|
|
9
|
+
static clearLastGeneratedSql(): void;
|
|
10
|
+
private static captureGeneratedSql;
|
|
11
|
+
/**
|
|
12
|
+
* All statements captured since {@link clearLastGeneratedSql}, then clears the batch.
|
|
13
|
+
*/
|
|
14
|
+
static consumeAllGeneratedSql(): string[];
|
|
3
15
|
/**
|
|
4
16
|
* Creates a new table using a blueprint.
|
|
5
17
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../jcc-express-mvc/lib/Jcc-eloquent/lib/Schema/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAMxC,qBAAa,MAAM;IACjB;;OAEG;IACH,MAAM,CAAC,MAAM,CACX,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,GACvC,MAAM;IAiBT;;OAEG;IACH,MAAM,CAAC,KAAK,CACV,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,GACvC,MAAM;IAiBT;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../jcc-express-mvc/lib/Jcc-eloquent/lib/Schema/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAMxC,qBAAa,MAAM;IACjB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAgB;IAEhD,uEAAuE;IACvE,MAAM,CAAC,qBAAqB,IAAI,IAAI;IAIpC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAKlC;;OAEG;IACH,MAAM,CAAC,sBAAsB,IAAI,MAAM,EAAE;IAMzC;;OAEG;IACH,MAAM,CAAC,MAAM,CACX,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,GACvC,MAAM;IAiBT;;OAEG;IACH,MAAM,CAAC,KAAK,CACV,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,GACvC,MAAM;IAiBT;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAkB3C,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI9C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAgB1C;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAgBtC;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAe/C;;OAEG;WACU,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0C1D;;OAEG;WACU,SAAS,CACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC;IAmDnB;;OAEG;WACU,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAmDpE"}
|
|
@@ -8,6 +8,22 @@ const DB_1 = require("../DB");
|
|
|
8
8
|
const Config_1 = require("../../../Config/Config");
|
|
9
9
|
// dotenv.config({ path: `${appRootPath.path}/.env` });
|
|
10
10
|
class Schema {
|
|
11
|
+
/** Clear before running a migration `up`/`down` to avoid stale SQL. */
|
|
12
|
+
static clearLastGeneratedSql() {
|
|
13
|
+
this.generatedSqlBatch = [];
|
|
14
|
+
}
|
|
15
|
+
static captureGeneratedSql(sql) {
|
|
16
|
+
this.generatedSqlBatch.push(sql);
|
|
17
|
+
return sql;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* All statements captured since {@link clearLastGeneratedSql}, then clears the batch.
|
|
21
|
+
*/
|
|
22
|
+
static consumeAllGeneratedSql() {
|
|
23
|
+
const out = [...this.generatedSqlBatch];
|
|
24
|
+
this.generatedSqlBatch = [];
|
|
25
|
+
return out;
|
|
26
|
+
}
|
|
11
27
|
/**
|
|
12
28
|
* Creates a new table using a blueprint.
|
|
13
29
|
*/
|
|
@@ -18,7 +34,7 @@ class Schema {
|
|
|
18
34
|
}
|
|
19
35
|
const blueprint = new BluePrint_1.Blueprint(tableName);
|
|
20
36
|
callback(blueprint);
|
|
21
|
-
return blueprint.toSQL("CREATE", tableName);
|
|
37
|
+
return this.captureGeneratedSql(blueprint.toSQL("CREATE", tableName));
|
|
22
38
|
}
|
|
23
39
|
catch (error) {
|
|
24
40
|
throw new DatabaseError_1.DatabaseError(`Failed to create table '${tableName}': ${error.message}`, constant_1.SCHEMA_CREATE_ERROR);
|
|
@@ -34,7 +50,7 @@ class Schema {
|
|
|
34
50
|
}
|
|
35
51
|
const blueprint = new BluePrint_1.Blueprint(tableName);
|
|
36
52
|
callback(blueprint);
|
|
37
|
-
return blueprint.toSQL("ALTER", tableName);
|
|
53
|
+
return this.captureGeneratedSql(blueprint.toSQL("ALTER", tableName));
|
|
38
54
|
}
|
|
39
55
|
catch (error) {
|
|
40
56
|
throw new DatabaseError_1.DatabaseError(`Failed to alter table '${tableName}': ${error.message}`, constant_1.SCHEMA_CREATE_ERROR);
|
|
@@ -49,7 +65,7 @@ class Schema {
|
|
|
49
65
|
throw new Error("Table name cannot be empty");
|
|
50
66
|
}
|
|
51
67
|
const blueprint = new BluePrint_1.Blueprint(tableName);
|
|
52
|
-
return blueprint.toSQL("DROP TABLE IF EXISTS", tableName);
|
|
68
|
+
return this.captureGeneratedSql(blueprint.toSQL("DROP TABLE IF EXISTS", tableName));
|
|
53
69
|
}
|
|
54
70
|
catch (error) {
|
|
55
71
|
throw new DatabaseError_1.DatabaseError(`Failed to drop table '${tableName}': ${error.message}`, constant_1.SCHEMA_CREATE_ERROR);
|
|
@@ -67,7 +83,7 @@ class Schema {
|
|
|
67
83
|
throw new Error("Table name cannot be empty");
|
|
68
84
|
}
|
|
69
85
|
const blueprint = new BluePrint_1.Blueprint(tableName);
|
|
70
|
-
return blueprint.toSQL("TRUNCATE TABLE", tableName);
|
|
86
|
+
return this.captureGeneratedSql(blueprint.toSQL("TRUNCATE TABLE", tableName));
|
|
71
87
|
}
|
|
72
88
|
catch (error) {
|
|
73
89
|
throw new DatabaseError_1.DatabaseError(`Failed to truncate table '${tableName}': ${error.message}`, constant_1.SCHEMA_CREATE_ERROR);
|
|
@@ -82,7 +98,7 @@ class Schema {
|
|
|
82
98
|
throw new Error("Table name cannot be empty");
|
|
83
99
|
}
|
|
84
100
|
const blueprint = new BluePrint_1.Blueprint(tableName);
|
|
85
|
-
return blueprint.toSQL("DROP TABLE", tableName);
|
|
101
|
+
return this.captureGeneratedSql(blueprint.toSQL("DROP TABLE", tableName));
|
|
86
102
|
}
|
|
87
103
|
catch (error) {
|
|
88
104
|
throw new DatabaseError_1.DatabaseError(`Failed to drop table '${tableName}': ${error.message}`, constant_1.SCHEMA_CREATE_ERROR);
|
|
@@ -96,7 +112,7 @@ class Schema {
|
|
|
96
112
|
if (!from || from.trim() === "" || !to || to.trim() === "") {
|
|
97
113
|
throw new Error("Table names cannot be empty");
|
|
98
114
|
}
|
|
99
|
-
return `RENAME TABLE ${from} TO ${to}
|
|
115
|
+
return this.captureGeneratedSql(`RENAME TABLE ${from} TO ${to};`);
|
|
100
116
|
}
|
|
101
117
|
catch (error) {
|
|
102
118
|
throw new DatabaseError_1.DatabaseError(`Failed to rename table from '${from}' to '${to}': ${error.message}`, constant_1.SCHEMA_CREATE_ERROR);
|
|
@@ -235,3 +251,8 @@ class Schema {
|
|
|
235
251
|
}
|
|
236
252
|
}
|
|
237
253
|
exports.Schema = Schema;
|
|
254
|
+
/**
|
|
255
|
+
* SQL emitted by Schema.create/table/drop/… in order, so migrations can omit
|
|
256
|
+
* `return` and still run; multiple calls in one `up()`/`down()` are all kept.
|
|
257
|
+
*/
|
|
258
|
+
Schema.generatedSqlBatch = [];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Request } from "express";
|
|
1
2
|
import { Model } from "../Model";
|
|
2
3
|
export declare class Utils {
|
|
3
4
|
/**
|
|
@@ -52,6 +53,15 @@ export declare class Utils {
|
|
|
52
53
|
* - `active`: A boolean indicating if the link corresponds to the current page.
|
|
53
54
|
*/
|
|
54
55
|
static generatePaginationLinks(path: string, currentPage: number, lastPage: number): Record<string, any>[];
|
|
56
|
+
/**
|
|
57
|
+
* Merge `request.query` with overrides into a full URL (pathname + search).
|
|
58
|
+
* Pass `null` / `undefined` in overrides to remove a query key.
|
|
59
|
+
*/
|
|
60
|
+
static mergeRequestQuery(request: Request, overrides: Record<string, string | number | boolean | null | undefined>): string;
|
|
61
|
+
/** Encode a cursor column value for `?cursor=` (base64url JSON). */
|
|
62
|
+
static encodeCursorValue(value: unknown): string;
|
|
63
|
+
/** Decode `?cursor=` from {@link encodeCursorValue} or fall back to raw string / number. */
|
|
64
|
+
static decodeCursorValue(encoded: string): unknown;
|
|
55
65
|
/**
|
|
56
66
|
* Extracts and returns metadata and configurations for a given Model.
|
|
57
67
|
* @param {any} Model - The model whose metadata needs to be extracted. This should follow the ORM's Model structure.
|
|
@@ -84,5 +94,8 @@ export declare class Utils {
|
|
|
84
94
|
static getModelFile(modelType: string): Promise<typeof Model>;
|
|
85
95
|
static formatDate(): string;
|
|
86
96
|
static isClass(value: any): boolean;
|
|
97
|
+
static isPostgres(): boolean;
|
|
98
|
+
static isMysql(): boolean;
|
|
99
|
+
static isSqlite(): boolean;
|
|
87
100
|
}
|
|
88
101
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../jcc-express-mvc/lib/Jcc-eloquent/lib/utils/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../jcc-express-mvc/lib/Jcc-eloquent/lib/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,qBAAa,KAAK;IAChB;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKrC;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIvC;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQpC;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;IAYrD,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG;IAkBjC;;;;;;OAMG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO;IAMzE;;;;;OAKG;IACH,MAAM,CAAC,oBAAoB,CACzB,cAAc,EAAE,MAAM,GAAG,MAAM,GAC9B,MAAM,GAAG,MAAM;IAUlB;;;;;;OAMG;IACH,MAAM,CAAC,uBAAuB,CAC5B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM;IAalB;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CACtB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GACtE,MAAM;IAmBT,oEAAoE;IACpE,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAOhD,4FAA4F;IAC5F,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAelD;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;;;;;;;IAenE;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAQxC;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM;IAmBhD;;;;OAIG;WACU,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,KAAK,CAAC;IAwDnE,MAAM,CAAC,UAAU;IAYjB,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAOnC,MAAM,CAAC,UAAU,IAAI,OAAO;IAO5B,MAAM,CAAC,OAAO,IAAI,OAAO;IAOzB,MAAM,CAAC,QAAQ,IAAI,OAAO;CAO3B"}
|