@uecsio/pages-api 1.2.3 → 2.0.0

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 (110) hide show
  1. package/README.md +107 -2
  2. package/dist/pages-nestjs/src/controllers/pages.controller.d.ts +8 -0
  3. package/dist/pages-nestjs/src/controllers/pages.controller.d.ts.map +1 -0
  4. package/dist/{controllers → pages-nestjs/src/controllers}/pages.controller.js +11 -18
  5. package/dist/pages-nestjs/src/controllers/pages.controller.js.map +1 -0
  6. package/dist/{dto → pages-nestjs/src/dto}/create-page.dto.d.ts +2 -2
  7. package/dist/pages-nestjs/src/dto/create-page.dto.d.ts.map +1 -0
  8. package/dist/{dto → pages-nestjs/src/dto}/create-page.dto.js +13 -6
  9. package/dist/pages-nestjs/src/dto/create-page.dto.js.map +1 -0
  10. package/dist/pages-nestjs/src/dto/update-page.dto.d.ts +12 -0
  11. package/dist/pages-nestjs/src/dto/update-page.dto.d.ts.map +1 -0
  12. package/dist/pages-nestjs/src/dto/update-page.dto.js +113 -0
  13. package/dist/pages-nestjs/src/dto/update-page.dto.js.map +1 -0
  14. package/dist/pages-nestjs/src/entities/page.entity.d.ts.map +1 -0
  15. package/dist/{entities → pages-nestjs/src/entities}/page.entity.js +2 -2
  16. package/dist/pages-nestjs/src/entities/page.entity.js.map +1 -0
  17. package/dist/{index.d.ts → pages-nestjs/src/index.d.ts} +2 -0
  18. package/dist/pages-nestjs/src/index.d.ts.map +1 -0
  19. package/dist/{index.js → pages-nestjs/src/index.js} +2 -0
  20. package/dist/pages-nestjs/src/index.js.map +1 -0
  21. package/dist/pages-nestjs/src/migrations/1704067200000-CreatePagesTable.d.ts +6 -0
  22. package/dist/pages-nestjs/src/migrations/1704067200000-CreatePagesTable.d.ts.map +1 -0
  23. package/dist/pages-nestjs/src/migrations/1704067200000-CreatePagesTable.js +99 -0
  24. package/dist/pages-nestjs/src/migrations/1704067200000-CreatePagesTable.js.map +1 -0
  25. package/dist/pages-nestjs/src/migrations/1735689600000-AddUniqueConstraintToUrl.d.ts +6 -0
  26. package/dist/pages-nestjs/src/migrations/1735689600000-AddUniqueConstraintToUrl.d.ts.map +1 -0
  27. package/dist/pages-nestjs/src/migrations/1735689600000-AddUniqueConstraintToUrl.js +18 -0
  28. package/dist/pages-nestjs/src/migrations/1735689600000-AddUniqueConstraintToUrl.js.map +1 -0
  29. package/dist/pages-nestjs/src/migrations/migration.config.d.ts +11 -0
  30. package/dist/pages-nestjs/src/migrations/migration.config.d.ts.map +1 -0
  31. package/dist/pages-nestjs/src/migrations/migration.config.js +15 -0
  32. package/dist/pages-nestjs/src/migrations/migration.config.js.map +1 -0
  33. package/dist/pages-nestjs/src/pages.module.d.ts.map +1 -0
  34. package/dist/{pages.module.js → pages-nestjs/src/pages.module.js} +4 -1
  35. package/dist/pages-nestjs/src/pages.module.js.map +1 -0
  36. package/dist/pages-nestjs/src/services/page-url.service.d.ts +10 -0
  37. package/dist/pages-nestjs/src/services/page-url.service.d.ts.map +1 -0
  38. package/dist/pages-nestjs/src/services/page-url.service.js +38 -0
  39. package/dist/pages-nestjs/src/services/page-url.service.js.map +1 -0
  40. package/dist/pages-nestjs/src/services/pages.service.d.ts +7 -0
  41. package/dist/pages-nestjs/src/services/pages.service.d.ts.map +1 -0
  42. package/dist/{services → pages-nestjs/src/services}/pages.service.js +4 -4
  43. package/dist/pages-nestjs/src/services/pages.service.js.map +1 -0
  44. package/dist/pages-nestjs/src/specs/pages.test.config.d.ts.map +1 -0
  45. package/dist/pages-nestjs/src/specs/pages.test.config.js.map +1 -0
  46. package/dist/pages-nestjs/src/subscribers/page-url.subscriber.d.ts +12 -0
  47. package/dist/pages-nestjs/src/subscribers/page-url.subscriber.d.ts.map +1 -0
  48. package/dist/pages-nestjs/src/subscribers/page-url.subscriber.js +44 -0
  49. package/dist/pages-nestjs/src/subscribers/page-url.subscriber.js.map +1 -0
  50. package/dist/pages-nestjs/src/tests/pages.test.config.d.ts +31 -0
  51. package/dist/pages-nestjs/src/tests/pages.test.config.d.ts.map +1 -0
  52. package/dist/pages-nestjs/src/tests/pages.test.config.js +86 -0
  53. package/dist/pages-nestjs/src/tests/pages.test.config.js.map +1 -0
  54. package/dist/pages-nestjs/src/validators/is-unique-url.constraint.d.ts +10 -0
  55. package/dist/pages-nestjs/src/validators/is-unique-url.constraint.d.ts.map +1 -0
  56. package/dist/pages-nestjs/src/validators/is-unique-url.constraint.js +51 -0
  57. package/dist/pages-nestjs/src/validators/is-unique-url.constraint.js.map +1 -0
  58. package/dist/pages-nestjs/src/validators/is-unique-url.validator.d.ts +3 -0
  59. package/dist/pages-nestjs/src/validators/is-unique-url.validator.d.ts.map +1 -0
  60. package/dist/pages-nestjs/src/validators/is-unique-url.validator.js +18 -0
  61. package/dist/pages-nestjs/src/validators/is-unique-url.validator.js.map +1 -0
  62. package/dist/utils/src/index.d.ts +7 -0
  63. package/dist/utils/src/index.d.ts.map +1 -0
  64. package/dist/utils/src/index.js +27 -0
  65. package/dist/utils/src/index.js.map +1 -0
  66. package/dist/utils/src/services/base-typeorm-crud.service.d.ts +6 -0
  67. package/dist/utils/src/services/base-typeorm-crud.service.d.ts.map +1 -0
  68. package/dist/utils/src/services/base-typeorm-crud.service.js +21 -0
  69. package/dist/utils/src/services/base-typeorm-crud.service.js.map +1 -0
  70. package/dist/utils/src/services/url-generator.service.d.ts +14 -0
  71. package/dist/utils/src/services/url-generator.service.d.ts.map +1 -0
  72. package/dist/utils/src/services/url-generator.service.js +66 -0
  73. package/dist/utils/src/services/url-generator.service.js.map +1 -0
  74. package/dist/utils/src/validators/is-unique-value.constraint.d.ts +14 -0
  75. package/dist/utils/src/validators/is-unique-value.constraint.d.ts.map +1 -0
  76. package/dist/utils/src/validators/is-unique-value.constraint.js +60 -0
  77. package/dist/utils/src/validators/is-unique-value.constraint.js.map +1 -0
  78. package/dist/utils/src/validators/is-unique-value.validator.d.ts +4 -0
  79. package/dist/utils/src/validators/is-unique-value.validator.d.ts.map +1 -0
  80. package/dist/utils/src/validators/is-unique-value.validator.js +23 -0
  81. package/dist/utils/src/validators/is-unique-value.validator.js.map +1 -0
  82. package/dist/utils/src/validators/is-url-path.validator.d.ts +3 -0
  83. package/dist/utils/src/validators/is-url-path.validator.d.ts.map +1 -0
  84. package/dist/utils/src/validators/is-url-path.validator.js +27 -0
  85. package/dist/utils/src/validators/is-url-path.validator.js.map +1 -0
  86. package/package.json +8 -4
  87. package/dist/controllers/pages.controller.d.ts +0 -8
  88. package/dist/controllers/pages.controller.d.ts.map +0 -1
  89. package/dist/controllers/pages.controller.js.map +0 -1
  90. package/dist/dto/create-page.dto.d.ts.map +0 -1
  91. package/dist/dto/create-page.dto.js.map +0 -1
  92. package/dist/dto/update-page.dto.d.ts +0 -7
  93. package/dist/dto/update-page.dto.d.ts.map +0 -1
  94. package/dist/dto/update-page.dto.js +0 -30
  95. package/dist/dto/update-page.dto.js.map +0 -1
  96. package/dist/entities/page.entity.d.ts.map +0 -1
  97. package/dist/entities/page.entity.js.map +0 -1
  98. package/dist/index.d.ts.map +0 -1
  99. package/dist/index.js.map +0 -1
  100. package/dist/pages.module.d.ts.map +0 -1
  101. package/dist/pages.module.js.map +0 -1
  102. package/dist/services/pages.service.d.ts +0 -7
  103. package/dist/services/pages.service.d.ts.map +0 -1
  104. package/dist/services/pages.service.js.map +0 -1
  105. package/dist/specs/pages.test.config.d.ts.map +0 -1
  106. package/dist/specs/pages.test.config.js.map +0 -1
  107. /package/dist/{entities → pages-nestjs/src/entities}/page.entity.d.ts +0 -0
  108. /package/dist/{pages.module.d.ts → pages-nestjs/src/pages.module.d.ts} +0 -0
  109. /package/dist/{specs → pages-nestjs/src/specs}/pages.test.config.d.ts +0 -0
  110. /package/dist/{specs → pages-nestjs/src/specs}/pages.test.config.js +0 -0
package/README.md CHANGED
@@ -2,6 +2,35 @@
2
2
 
3
3
  A reusable NestJS Pages module for content management with full CRUD operations, validation, and Swagger documentation.
4
4
 
5
+ ## ⚠️ Breaking Changes in v2.0.0
6
+
7
+ ### Migrated to @dataui/crud
8
+
9
+ Version 2.0.0 migrates from `@nestjs-library/crud` to `@dataui/crud`.
10
+
11
+ **What Changed:**
12
+ - CRUD library: `@nestjs-library/crud` → `@dataui/crud` + `@dataui/crud-typeorm`
13
+ - Enhanced query features (better filtering, sorting, pagination)
14
+ - Improved Swagger documentation
15
+ - Tests reorganized: `specs/` → `tests/` with `unit/` and `integration/` separation
16
+
17
+ **What Stayed the Same:**
18
+ - All entity fields (rich schema preserved)
19
+ - Auto-URL generation from titles
20
+ - Async validators
21
+ - All API endpoints and functionality
22
+ - Database schema (no migrations needed for upgrade)
23
+
24
+ **Installation:**
25
+ ```bash
26
+ npm install @uecsio/pages-api@^2.0.0
27
+ ```
28
+
29
+ **Usage:**
30
+ No code changes needed in consuming applications. The public API remains identical.
31
+
32
+ ---
33
+
5
34
  ## 🚀 Features
6
35
 
7
36
  - **Full CRUD Operations**: Create, Read, Update, Delete pages
@@ -22,7 +51,7 @@ npm install @uecsio/pages-api
22
51
  This package requires the following peer dependencies in your NestJS application:
23
52
 
24
53
  ```bash
25
- npm install @nestjs/common @nestjs/typeorm typeorm class-validator class-transformer @nestjs-library/crud
54
+ npm install @nestjs/common @nestjs/typeorm typeorm class-validator class-transformer @dataui/crud @dataui/crud-typeorm
26
55
  ```
27
56
 
28
57
  ## 📖 Usage
@@ -86,7 +115,83 @@ The package automatically provides a REST API with the following endpoints:
86
115
  - `PUT /pages/:id` - Update a page
87
116
  - `DELETE /pages/:id` - Delete a page
88
117
 
89
- ### 4. Customize the Page Entity
118
+ ### 4. Database Migrations
119
+
120
+ The package includes database migrations that are automatically discovered by the consuming application. The migrations will be executed externally via your TypeORM settings.
121
+
122
+ #### Automatic Discovery (Recommended)
123
+
124
+ The consuming application automatically discovers all `@uecsio` packages and their migrations:
125
+
126
+ ```typescript
127
+ // No manual configuration needed - migrations are auto-discovered!
128
+ @Module({
129
+ imports: [
130
+ TypeOrmModule.forRoot({
131
+ type: 'postgres',
132
+ host: 'localhost',
133
+ port: 5432,
134
+ username: 'postgres',
135
+ password: 'password',
136
+ database: 'your_database',
137
+ // Migrations and entities are automatically discovered from @uecsio packages
138
+ synchronize: false, // Always false for production
139
+ }),
140
+ PagesModule,
141
+ ],
142
+ })
143
+ export class AppModule {}
144
+ ```
145
+
146
+ #### Manual Integration (Alternative)
147
+
148
+ If you prefer manual control, you can still integrate manually:
149
+
150
+ ```typescript
151
+ import { PagesMigrationConfig } from '@uecsio/pages-api';
152
+
153
+ @Module({
154
+ imports: [
155
+ TypeOrmModule.forRoot({
156
+ type: 'postgres',
157
+ host: 'localhost',
158
+ port: 5432,
159
+ username: 'postgres',
160
+ password: 'password',
161
+ database: 'your_database',
162
+ entities: [...PagesMigrationConfig.entities],
163
+ migrations: [...PagesMigrationConfig.migrations],
164
+ migrationsTableName: 'migrations', // Standard migration table
165
+ synchronize: false, // Always false for production
166
+ }),
167
+ PagesModule,
168
+ ],
169
+ })
170
+ export class AppModule {}
171
+ ```
172
+
173
+ **Note:** This module uses the standard `migrations` table name, so it will work seamlessly with other modules that also use the same migration table.
174
+
175
+ #### Available migrations
176
+
177
+ The package provides the following migration:
178
+ - `CreatePagesTable1700000000000` - Creates the pages table with all required columns and indexes
179
+
180
+ #### Migration execution
181
+
182
+ Migrations will be executed automatically by TypeORM when you run:
183
+ ```bash
184
+ # Generate new migrations
185
+ npm run typeorm migration:generate
186
+
187
+ # Run pending migrations
188
+ npm run typeorm migration:run
189
+
190
+ # Revert last migration
191
+ npm run typeorm migration:revert
192
+ ```
193
+
194
+ ### 5. Customize the Page Entity
90
195
 
91
196
  You can extend the Page entity for your specific needs:
92
197
 
@@ -0,0 +1,8 @@
1
+ import { CrudController } from '@dataui/crud';
2
+ import { Page } from '../entities/page.entity';
3
+ import { PagesService } from '../services/pages.service';
4
+ export declare class PagesController implements CrudController<Page> {
5
+ service: PagesService;
6
+ constructor(service: PagesService);
7
+ }
8
+ //# sourceMappingURL=pages.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.controller.d.ts","sourceRoot":"","sources":["../../../../src/controllers/pages.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,cAAc,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAIzD,qBAYa,eAAgB,YAAW,cAAc,CAAC,IAAI,CAAC;IACvC,OAAO,EAAE,YAAY;gBAArB,OAAO,EAAE,YAAY;CACzC"}
@@ -11,37 +11,30 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.PagesController = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
- const crud_1 = require("@nestjs-library/crud");
14
+ const crud_1 = require("@dataui/crud");
15
15
  const swagger_1 = require("@nestjs/swagger");
16
16
  const page_entity_1 = require("../entities/page.entity");
17
17
  const pages_service_1 = require("../services/pages.service");
18
18
  const create_page_dto_1 = require("../dto/create-page.dto");
19
19
  const update_page_dto_1 = require("../dto/update-page.dto");
20
20
  let PagesController = class PagesController {
21
- constructor(crudService) {
22
- this.crudService = crudService;
21
+ constructor(service) {
22
+ this.service = service;
23
23
  }
24
24
  };
25
25
  exports.PagesController = PagesController;
26
26
  exports.PagesController = PagesController = __decorate([
27
- (0, swagger_1.ApiTags)('pages'),
28
27
  (0, crud_1.Crud)({
29
- entity: page_entity_1.Page,
30
- routes: {
31
- create: {
32
- swagger: {
33
- body: create_page_dto_1.CreatePageDto,
34
- response: page_entity_1.Page,
35
- },
36
- },
37
- update: {
38
- swagger: {
39
- body: update_page_dto_1.UpdatePageDto,
40
- response: page_entity_1.Page,
41
- },
42
- },
28
+ model: {
29
+ type: page_entity_1.Page,
30
+ },
31
+ dto: {
32
+ create: create_page_dto_1.CreatePageDto,
33
+ update: update_page_dto_1.UpdatePageDto,
34
+ replace: create_page_dto_1.CreatePageDto,
43
35
  },
44
36
  }),
37
+ (0, swagger_1.ApiTags)('pages'),
45
38
  (0, common_1.Controller)('pages'),
46
39
  __metadata("design:paramtypes", [pages_service_1.PagesService])
47
40
  ], PagesController);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.controller.js","sourceRoot":"","sources":["../../../../src/controllers/pages.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,uCAAoD;AACpD,6CAA0C;AAC1C,yDAA+C;AAC/C,6DAAyD;AACzD,4DAAuD;AACvD,4DAAuD;AAchD,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,YAAmB,OAAqB;QAArB,YAAO,GAAP,OAAO,CAAc;IAAG,CAAC;CAC7C,CAAA;AAFY,0CAAe;0BAAf,eAAe;IAZ3B,IAAA,WAAI,EAAC;QACJ,KAAK,EAAE;YACL,IAAI,EAAE,kBAAI;SACX;QACD,GAAG,EAAE;YACH,MAAM,EAAE,+BAAa;YACrB,MAAM,EAAE,+BAAa;YACrB,OAAO,EAAE,+BAAa;SACvB;KACF,CAAC;IACD,IAAA,iBAAO,EAAC,OAAO,CAAC;IAChB,IAAA,mBAAU,EAAC,OAAO,CAAC;qCAEU,4BAAY;GAD7B,eAAe,CAE3B"}
@@ -6,7 +6,7 @@ export declare class CreatePageDto {
6
6
  metaKeywords?: string;
7
7
  metaDescription?: string;
8
8
  status: number;
9
- activateFrom?: Date;
10
- activateTo?: Date;
9
+ activateFrom?: string;
10
+ activateTo?: string;
11
11
  }
12
12
  //# sourceMappingURL=create-page.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-page.dto.d.ts","sourceRoot":"","sources":["../../../../src/dto/create-page.dto.ts"],"names":[],"mappings":"AAMA,qBAAa,aAAa;IAOxB,KAAK,EAAE,MAAM,CAAC;IAUd,GAAG,EAAE,MAAM,CAAC;IAOZ,OAAO,EAAE,MAAM,CAAC;IAShB,SAAS,CAAC,EAAE,MAAM,CAAC;IASnB,YAAY,CAAC,EAAE,MAAM,CAAC;IAQtB,eAAe,CAAC,EAAE,MAAM,CAAC;IAYzB,MAAM,EAAE,MAAM,CAAC;IAQf,YAAY,CAAC,EAAE,MAAM,CAAC;IAQtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -11,7 +11,10 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.CreatePageDto = void 0;
13
13
  const class_validator_1 = require("class-validator");
14
+ const class_transformer_1 = require("class-transformer");
14
15
  const swagger_1 = require("@nestjs/swagger");
16
+ const utils_1 = require("@uecsio/utils");
17
+ const page_entity_1 = require("../entities/page.entity");
15
18
  class CreatePageDto {
16
19
  }
17
20
  exports.CreatePageDto = CreatePageDto;
@@ -26,12 +29,13 @@ __decorate([
26
29
  ], CreatePageDto.prototype, "title", void 0);
27
30
  __decorate([
28
31
  (0, swagger_1.ApiProperty)({
29
- description: 'The URL of the page',
30
- example: 'https://example.com/welcome',
32
+ description: 'The URL path of the page (without protocol and domain)',
33
+ example: '/welcome',
31
34
  maxLength: 255,
32
35
  }),
33
36
  (0, class_validator_1.IsString)(),
34
- (0, class_validator_1.IsUrl)(),
37
+ (0, utils_1.IsUrlPath)(),
38
+ (0, utils_1.IsUniqueValue)(page_entity_1.Page, 'url'),
35
39
  __metadata("design:type", String)
36
40
  ], CreatePageDto.prototype, "url", void 0);
37
41
  __decorate([
@@ -78,7 +82,10 @@ __decorate([
78
82
  minimum: 0,
79
83
  maximum: 2,
80
84
  }),
81
- (0, class_validator_1.IsNumber)(),
85
+ (0, class_transformer_1.Type)(() => Number),
86
+ (0, class_validator_1.IsInt)(),
87
+ (0, class_validator_1.Min)(0),
88
+ (0, class_validator_1.Max)(2),
82
89
  __metadata("design:type", Number)
83
90
  ], CreatePageDto.prototype, "status", void 0);
84
91
  __decorate([
@@ -88,7 +95,7 @@ __decorate([
88
95
  }),
89
96
  (0, class_validator_1.IsOptional)(),
90
97
  (0, class_validator_1.IsDateString)(),
91
- __metadata("design:type", Date)
98
+ __metadata("design:type", String)
92
99
  ], CreatePageDto.prototype, "activateFrom", void 0);
93
100
  __decorate([
94
101
  (0, swagger_1.ApiPropertyOptional)({
@@ -97,6 +104,6 @@ __decorate([
97
104
  }),
98
105
  (0, class_validator_1.IsOptional)(),
99
106
  (0, class_validator_1.IsDateString)(),
100
- __metadata("design:type", Date)
107
+ __metadata("design:type", String)
101
108
  ], CreatePageDto.prototype, "activateTo", void 0);
102
109
  //# sourceMappingURL=create-page.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-page.dto.js","sourceRoot":"","sources":["../../../../src/dto/create-page.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAsF;AACtF,yDAAyC;AACzC,6CAAmE;AACnE,yCAAyD;AACzD,yDAA+C;AAE/C,MAAa,aAAa;CA+EzB;AA/ED,sCA+EC;AAxEC;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,uBAAuB;QACpC,OAAO,EAAE,wBAAwB;QACjC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,0BAAQ,GAAE;;4CACG;AAUd;IARC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,wDAAwD;QACrE,OAAO,EAAE,UAAU;QACnB,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,iBAAS,GAAE;IACX,IAAA,qBAAa,EAAC,kBAAI,EAAE,KAAK,CAAC;;0CACf;AAOZ;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,iEAAiE;KAC3E,CAAC;IACD,IAAA,0BAAQ,GAAE;;8CACK;AAShB;IAPC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,8BAA8B;QACvC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;gDACQ;AASnB;IAPC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,4BAA4B;QACrC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;mDACW;AAQtB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,gEAAgE;KAC1E,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;sDACc;AAYzB;IAVC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,gDAAgD;QAC7D,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;KACX,CAAC;IACD,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;IACN,IAAA,qBAAG,EAAC,CAAC,CAAC;;6CACQ;AAQf;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,0BAA0B;KACpC,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,8BAAY,GAAE;;mDACO;AAQtB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,0BAA0B;KACpC,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,8BAAY,GAAE;;iDACK"}
@@ -0,0 +1,12 @@
1
+ export declare class UpdatePageDto {
2
+ title?: string;
3
+ url?: string;
4
+ content?: string;
5
+ metaTitle?: string;
6
+ metaKeywords?: string;
7
+ metaDescription?: string;
8
+ status?: number;
9
+ activateFrom?: string;
10
+ activateTo?: string;
11
+ }
12
+ //# sourceMappingURL=update-page.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-page.dto.d.ts","sourceRoot":"","sources":["../../../../src/dto/update-page.dto.ts"],"names":[],"mappings":"AAMA,qBAAa,aAAa;IAQxB,KAAK,CAAC,EAAE,MAAM,CAAC;IAWf,GAAG,CAAC,EAAE,MAAM,CAAC;IAQb,OAAO,CAAC,EAAE,MAAM,CAAC;IASjB,SAAS,CAAC,EAAE,MAAM,CAAC;IASnB,YAAY,CAAC,EAAE,MAAM,CAAC;IAQtB,eAAe,CAAC,EAAE,MAAM,CAAC;IAazB,MAAM,CAAC,EAAE,MAAM,CAAC;IAQhB,YAAY,CAAC,EAAE,MAAM,CAAC;IAQtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UpdatePageDto = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const swagger_1 = require("@nestjs/swagger");
16
+ const utils_1 = require("@uecsio/utils");
17
+ const page_entity_1 = require("../entities/page.entity");
18
+ class UpdatePageDto {
19
+ }
20
+ exports.UpdatePageDto = UpdatePageDto;
21
+ __decorate([
22
+ (0, swagger_1.ApiPropertyOptional)({
23
+ description: 'The title of the page',
24
+ example: 'Welcome to Our Website',
25
+ maxLength: 255,
26
+ }),
27
+ (0, class_validator_1.IsOptional)(),
28
+ (0, class_validator_1.IsString)(),
29
+ __metadata("design:type", String)
30
+ ], UpdatePageDto.prototype, "title", void 0);
31
+ __decorate([
32
+ (0, swagger_1.ApiPropertyOptional)({
33
+ description: 'The URL path of the page (without protocol and domain)',
34
+ example: '/welcome',
35
+ maxLength: 255,
36
+ }),
37
+ (0, class_validator_1.IsOptional)(),
38
+ (0, class_validator_1.IsString)(),
39
+ (0, utils_1.IsUrlPath)(),
40
+ (0, utils_1.IsUniqueValue)(page_entity_1.Page, 'url'),
41
+ __metadata("design:type", String)
42
+ ], UpdatePageDto.prototype, "url", void 0);
43
+ __decorate([
44
+ (0, swagger_1.ApiPropertyOptional)({
45
+ description: 'The main content of the page',
46
+ example: 'Welcome to our amazing website! We provide the best services...',
47
+ }),
48
+ (0, class_validator_1.IsOptional)(),
49
+ (0, class_validator_1.IsString)(),
50
+ __metadata("design:type", String)
51
+ ], UpdatePageDto.prototype, "content", void 0);
52
+ __decorate([
53
+ (0, swagger_1.ApiPropertyOptional)({
54
+ description: 'SEO meta title for the page',
55
+ example: 'Welcome Page - Best Services',
56
+ maxLength: 255,
57
+ }),
58
+ (0, class_validator_1.IsOptional)(),
59
+ (0, class_validator_1.IsString)(),
60
+ __metadata("design:type", String)
61
+ ], UpdatePageDto.prototype, "metaTitle", void 0);
62
+ __decorate([
63
+ (0, swagger_1.ApiPropertyOptional)({
64
+ description: 'SEO meta keywords for the page',
65
+ example: 'welcome, services, website',
66
+ maxLength: 255,
67
+ }),
68
+ (0, class_validator_1.IsOptional)(),
69
+ (0, class_validator_1.IsString)(),
70
+ __metadata("design:type", String)
71
+ ], UpdatePageDto.prototype, "metaKeywords", void 0);
72
+ __decorate([
73
+ (0, swagger_1.ApiPropertyOptional)({
74
+ description: 'SEO meta description for the page',
75
+ example: 'Welcome to our website where you can find the best services...',
76
+ }),
77
+ (0, class_validator_1.IsOptional)(),
78
+ (0, class_validator_1.IsString)(),
79
+ __metadata("design:type", String)
80
+ ], UpdatePageDto.prototype, "metaDescription", void 0);
81
+ __decorate([
82
+ (0, swagger_1.ApiPropertyOptional)({
83
+ description: 'Page status (1: active, 0: inactive, 2: draft)',
84
+ example: 1,
85
+ minimum: 0,
86
+ maximum: 2,
87
+ }),
88
+ (0, class_validator_1.IsOptional)(),
89
+ (0, class_transformer_1.Type)(() => Number),
90
+ (0, class_validator_1.IsInt)(),
91
+ (0, class_validator_1.Min)(0),
92
+ (0, class_validator_1.Max)(2),
93
+ __metadata("design:type", Number)
94
+ ], UpdatePageDto.prototype, "status", void 0);
95
+ __decorate([
96
+ (0, swagger_1.ApiPropertyOptional)({
97
+ description: 'Date when the page becomes active',
98
+ example: '2024-01-01T00:00:00.000Z',
99
+ }),
100
+ (0, class_validator_1.IsOptional)(),
101
+ (0, class_validator_1.IsDateString)(),
102
+ __metadata("design:type", String)
103
+ ], UpdatePageDto.prototype, "activateFrom", void 0);
104
+ __decorate([
105
+ (0, swagger_1.ApiPropertyOptional)({
106
+ description: 'Date when the page becomes inactive',
107
+ example: '2024-12-31T23:59:59.999Z',
108
+ }),
109
+ (0, class_validator_1.IsOptional)(),
110
+ (0, class_validator_1.IsDateString)(),
111
+ __metadata("design:type", String)
112
+ ], UpdatePageDto.prototype, "activateTo", void 0);
113
+ //# sourceMappingURL=update-page.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-page.dto.js","sourceRoot":"","sources":["../../../../src/dto/update-page.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAsF;AACtF,yDAAyC;AACzC,6CAAsD;AACtD,yCAAyD;AACzD,yDAA+C;AAE/C,MAAa,aAAa;CAmFzB;AAnFD,sCAmFC;AA3EC;IAPC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,uBAAuB;QACpC,OAAO,EAAE,wBAAwB;QACjC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;4CACI;AAWf;IATC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,wDAAwD;QACrE,OAAO,EAAE,UAAU;QACnB,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,iBAAS,GAAE;IACX,IAAA,qBAAa,EAAC,kBAAI,EAAE,KAAK,CAAC;;0CACd;AAQb;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,iEAAiE;KAC3E,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;8CACM;AASjB;IAPC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,8BAA8B;QACvC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;gDACQ;AASnB;IAPC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,4BAA4B;QACrC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;mDACW;AAQtB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,gEAAgE;KAC1E,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;sDACc;AAazB;IAXC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,gDAAgD;QAC7D,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;KACX,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;IACN,IAAA,qBAAG,EAAC,CAAC,CAAC;;6CACS;AAQhB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,0BAA0B;KACpC,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,8BAAY,GAAE;;mDACO;AAQtB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,0BAA0B;KACpC,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,8BAAY,GAAE;;iDACK"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.entity.d.ts","sourceRoot":"","sources":["../../../../src/entities/page.entity.ts"],"names":[],"mappings":"AAGA,qBACa,IAAI;IAOf,EAAE,EAAE,MAAM,CAAC;IAQX,KAAK,EAAE,MAAM,CAAC;IAQd,GAAG,EAAE,MAAM,CAAC;IAOZ,OAAO,EAAE,MAAM,CAAC;IAQhB,SAAS,EAAE,MAAM,CAAC;IAQlB,YAAY,EAAE,MAAM,CAAC;IAOrB,eAAe,EAAE,MAAM,CAAC;IASxB,MAAM,EAAE,MAAM,CAAC;IAOf,YAAY,EAAE,IAAI,CAAC;IAOnB,UAAU,EAAE,IAAI,CAAC;IAQjB,SAAS,EAAE,IAAI,CAAC;IAQhB,SAAS,EAAE,IAAI,CAAC;CACjB"}
@@ -39,7 +39,7 @@ __decorate([
39
39
  example: 'https://example.com/welcome',
40
40
  maxLength: 255,
41
41
  }),
42
- (0, typeorm_1.Column)({ length: 255 }),
42
+ (0, typeorm_1.Column)({ length: 255, unique: true }),
43
43
  __metadata("design:type", String)
44
44
  ], Page.prototype, "url", void 0);
45
45
  __decorate([
@@ -121,6 +121,6 @@ __decorate([
121
121
  __metadata("design:type", Date)
122
122
  ], Page.prototype, "updatedAt", void 0);
123
123
  exports.Page = Page = __decorate([
124
- (0, typeorm_1.Entity)()
124
+ (0, typeorm_1.Entity)('page')
125
125
  ], Page);
126
126
  //# sourceMappingURL=page.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.entity.js","sourceRoot":"","sources":["../../../../src/entities/page.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAqG;AACrG,6CAAmE;AAG5D,IAAM,IAAI,GAAV,MAAM,IAAI;CA6FhB,CAAA;AA7FY,oBAAI;AAOf;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,gCAAsB,GAAE;;gCACd;AAQX;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,uBAAuB;QACpC,OAAO,EAAE,wBAAwB;QACjC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;mCACV;AAQd;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,6BAA6B;QACtC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;iCAC1B;AAOZ;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,iEAAiE;KAC3E,CAAC;IACD,IAAA,gBAAM,GAAE;;qCACO;AAQhB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,8BAA8B;QACvC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;uCACtB;AAQlB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,4BAA4B;QACrC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;0CACnB;AAOrB;IALC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,gEAAgE;KAC1E,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACH;AASxB;IAPC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,gDAAgD;QAC7D,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;KACX,CAAC;IACD,IAAA,gBAAM,GAAE;;oCACM;AAOf;IALC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,0BAA0B;KACpC,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACb,IAAI;0CAAC;AAOnB;IALC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,0BAA0B;KACpC,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACf,IAAI;wCAAC;AAQjB;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,0BAA0B;QACnC,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,0BAAgB,GAAE;8BACR,IAAI;uCAAC;AAQhB;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,0BAA0B;QACnC,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,0BAAgB,GAAE;8BACR,IAAI;uCAAC;eA5FL,IAAI;IADhB,IAAA,gBAAM,EAAC,MAAM,CAAC;GACF,IAAI,CA6FhB"}
@@ -4,6 +4,8 @@ export * from './controllers/pages.controller';
4
4
  export * from './dto/create-page.dto';
5
5
  export * from './dto/update-page.dto';
6
6
  export * from './entities/page.entity';
7
+ export * from './subscribers/page-url.subscriber';
8
+ export * from './migrations/migration.config';
7
9
  export { Page } from './entities/page.entity';
8
10
  export { CreatePageDto } from './dto/create-page.dto';
9
11
  export { UpdatePageDto } from './dto/update-page.dto';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAGlD,cAAc,+BAA+B,CAAC;AAG9C,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
@@ -21,6 +21,8 @@ __exportStar(require("./controllers/pages.controller"), exports);
21
21
  __exportStar(require("./dto/create-page.dto"), exports);
22
22
  __exportStar(require("./dto/update-page.dto"), exports);
23
23
  __exportStar(require("./entities/page.entity"), exports);
24
+ __exportStar(require("./subscribers/page-url.subscriber"), exports);
25
+ __exportStar(require("./migrations/migration.config"), exports);
24
26
  var page_entity_1 = require("./entities/page.entity");
25
27
  Object.defineProperty(exports, "Page", { enumerable: true, get: function () { return page_entity_1.Page; } });
26
28
  var create_page_dto_1 = require("./dto/create-page.dto");
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,iDAA+B;AAC/B,2DAAyC;AACzC,iEAA+C;AAC/C,wDAAsC;AACtC,wDAAsC;AACtC,yDAAuC;AACvC,oEAAkD;AAGlD,gEAA8C;AAG9C,sDAA8C;AAArC,mGAAA,IAAI,OAAA;AACb,yDAAsD;AAA7C,gHAAA,aAAa,OAAA;AACtB,yDAAsD;AAA7C,gHAAA,aAAa,OAAA;AACtB,0DAAwD;AAA/C,6GAAA,YAAY,OAAA;AACrB,mEAAiE;AAAxD,mHAAA,eAAe,OAAA;AACxB,+CAA6C;AAApC,2GAAA,WAAW,OAAA"}
@@ -0,0 +1,6 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class CreatePagesTable1704067200000 implements MigrationInterface {
3
+ up(queryRunner: QueryRunner): Promise<void>;
4
+ down(queryRunner: QueryRunner): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=1704067200000-CreatePagesTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1704067200000-CreatePagesTable.d.ts","sourceRoot":"","sources":["../../../../src/migrations/1704067200000-CreatePagesTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAqB,MAAM,SAAS,CAAC;AAE7E,qBAAa,6BAA8B,YAAW,kBAAkB;IACzD,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAwG3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3D"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreatePagesTable1704067200000 = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ class CreatePagesTable1704067200000 {
6
+ async up(queryRunner) {
7
+ await queryRunner.createTable(new typeorm_1.Table({
8
+ name: 'page',
9
+ columns: [
10
+ {
11
+ name: 'id',
12
+ type: 'int',
13
+ isPrimary: true,
14
+ isGenerated: true,
15
+ generationStrategy: 'increment',
16
+ },
17
+ {
18
+ name: 'title',
19
+ type: 'varchar',
20
+ length: '255',
21
+ isNullable: false,
22
+ },
23
+ {
24
+ name: 'url',
25
+ type: 'varchar',
26
+ length: '255',
27
+ isNullable: false,
28
+ },
29
+ {
30
+ name: 'content',
31
+ type: 'text',
32
+ isNullable: false,
33
+ },
34
+ {
35
+ name: 'metaTitle',
36
+ type: 'varchar',
37
+ length: '255',
38
+ isNullable: true,
39
+ },
40
+ {
41
+ name: 'metaKeywords',
42
+ type: 'text',
43
+ isNullable: true,
44
+ },
45
+ {
46
+ name: 'metaDescription',
47
+ type: 'text',
48
+ isNullable: true,
49
+ },
50
+ {
51
+ name: 'status',
52
+ type: 'int',
53
+ default: 1,
54
+ isNullable: false,
55
+ },
56
+ {
57
+ name: 'activateFrom',
58
+ type: 'timestamp',
59
+ isNullable: true,
60
+ },
61
+ {
62
+ name: 'activateTo',
63
+ type: 'timestamp',
64
+ isNullable: true,
65
+ },
66
+ {
67
+ name: 'createdAt',
68
+ type: 'timestamp',
69
+ default: 'CURRENT_TIMESTAMP',
70
+ isNullable: false,
71
+ },
72
+ {
73
+ name: 'updatedAt',
74
+ type: 'timestamp',
75
+ default: 'CURRENT_TIMESTAMP',
76
+ onUpdate: 'CURRENT_TIMESTAMP',
77
+ isNullable: false,
78
+ },
79
+ ],
80
+ }), true);
81
+ await queryRunner.createIndex('page', new typeorm_1.TableIndex({
82
+ name: 'IDX_PAGE_STATUS',
83
+ columnNames: ['status'],
84
+ }));
85
+ await queryRunner.createIndex('page', new typeorm_1.TableIndex({
86
+ name: 'IDX_PAGE_ACTIVATE_FROM',
87
+ columnNames: ['activateFrom'],
88
+ }));
89
+ await queryRunner.createIndex('page', new typeorm_1.TableIndex({
90
+ name: 'IDX_PAGE_ACTIVATE_TO',
91
+ columnNames: ['activateTo'],
92
+ }));
93
+ }
94
+ async down(queryRunner) {
95
+ await queryRunner.dropTable('page');
96
+ }
97
+ }
98
+ exports.CreatePagesTable1704067200000 = CreatePagesTable1704067200000;
99
+ //# sourceMappingURL=1704067200000-CreatePagesTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1704067200000-CreatePagesTable.js","sourceRoot":"","sources":["../../../../src/migrations/1704067200000-CreatePagesTable.ts"],"names":[],"mappings":";;;AAAA,qCAA6E;AAE7E,MAAa,6BAA6B;IACjC,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,WAAW,CAC3B,IAAI,eAAK,CAAC;YACR,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,KAAK;oBACX,SAAS,EAAE,IAAI;oBACf,WAAW,EAAE,IAAI;oBACjB,kBAAkB,EAAE,WAAW;iBAChC;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,KAAK;oBACb,UAAU,EAAE,KAAK;iBAClB;gBACD;oBACE,IAAI,EAAE,KAAK;oBACX,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,KAAK;oBACb,UAAU,EAAE,KAAK;iBAClB;gBACD;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,MAAM;oBACZ,UAAU,EAAE,KAAK;iBAClB;gBACD;oBACE,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,KAAK;oBACb,UAAU,EAAE,IAAI;iBACjB;gBACD;oBACE,IAAI,EAAE,cAAc;oBACpB,IAAI,EAAE,MAAM;oBACZ,UAAU,EAAE,IAAI;iBACjB;gBACD;oBACE,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,MAAM;oBACZ,UAAU,EAAE,IAAI;iBACjB;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,KAAK;oBACX,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,KAAK;iBAClB;gBACD;oBACE,IAAI,EAAE,cAAc;oBACpB,IAAI,EAAE,WAAW;oBACjB,UAAU,EAAE,IAAI;iBACjB;gBACD;oBACE,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,WAAW;oBACjB,UAAU,EAAE,IAAI;iBACjB;gBACD;oBACE,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,mBAAmB;oBAC5B,UAAU,EAAE,KAAK;iBAClB;gBACD;oBACE,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,mBAAmB;oBAC5B,QAAQ,EAAE,mBAAmB;oBAC7B,UAAU,EAAE,KAAK;iBAClB;aACF;SACF,CAAC,EACF,IAAI,CACL,CAAC;QAEF,MAAM,WAAW,CAAC,WAAW,CAC3B,MAAM,EACN,IAAI,oBAAU,CAAC;YACb,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,CAAC,QAAQ,CAAC;SACxB,CAAC,CACH,CAAC;QAEF,MAAM,WAAW,CAAC,WAAW,CAC3B,MAAM,EACN,IAAI,oBAAU,CAAC;YACb,IAAI,EAAE,wBAAwB;YAC9B,WAAW,EAAE,CAAC,cAAc,CAAC;SAC9B,CAAC,CACH,CAAC;QAEF,MAAM,WAAW,CAAC,WAAW,CAC3B,MAAM,EACN,IAAI,oBAAU,CAAC;YACb,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,CAAC,YAAY,CAAC;SAC5B,CAAC,CACH,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;CACF;AA5GD,sEA4GC"}
@@ -0,0 +1,6 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class AddUniqueConstraintToUrl1735689600000 implements MigrationInterface {
3
+ up(queryRunner: QueryRunner): Promise<void>;
4
+ down(queryRunner: QueryRunner): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=1735689600000-AddUniqueConstraintToUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1735689600000-AddUniqueConstraintToUrl.d.ts","sourceRoot":"","sources":["../../../../src/migrations/1735689600000-AddUniqueConstraintToUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAc,MAAM,SAAS,CAAC;AAEtE,qBAAa,qCAAsC,YAAW,kBAAkB;IACjE,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAI3D"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AddUniqueConstraintToUrl1735689600000 = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ class AddUniqueConstraintToUrl1735689600000 {
6
+ async up(queryRunner) {
7
+ await queryRunner.createIndex('page', new typeorm_1.TableIndex({
8
+ name: 'UQ_PAGE_URL',
9
+ columnNames: ['url'],
10
+ isUnique: true,
11
+ }));
12
+ }
13
+ async down(queryRunner) {
14
+ await queryRunner.dropIndex('page', 'UQ_PAGE_URL');
15
+ }
16
+ }
17
+ exports.AddUniqueConstraintToUrl1735689600000 = AddUniqueConstraintToUrl1735689600000;
18
+ //# sourceMappingURL=1735689600000-AddUniqueConstraintToUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1735689600000-AddUniqueConstraintToUrl.js","sourceRoot":"","sources":["../../../../src/migrations/1735689600000-AddUniqueConstraintToUrl.ts"],"names":[],"mappings":";;;AAAA,qCAAsE;AAEtE,MAAa,qCAAqC;IACzC,KAAK,CAAC,EAAE,CAAC,WAAwB;QAEtC,MAAM,WAAW,CAAC,WAAW,CAC3B,MAAM,EACN,IAAI,oBAAU,CAAC;YACb,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,CAAC,KAAK,CAAC;YACpB,QAAQ,EAAE,IAAI;SACf,CAAC,CACH,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QAExC,MAAM,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACrD,CAAC;CACF;AAjBD,sFAiBC"}
@@ -0,0 +1,11 @@
1
+ import { Page } from '../entities/page.entity';
2
+ import { CreatePagesTable1704067200000 } from './1704067200000-CreatePagesTable';
3
+ import { AddUniqueConstraintToUrl1735689600000 } from './1735689600000-AddUniqueConstraintToUrl';
4
+ export declare const PagesMigrationConfig: {
5
+ entities: (typeof Page)[];
6
+ migrations: (typeof CreatePagesTable1704067200000)[];
7
+ migrationsTableName: string;
8
+ };
9
+ export { CreatePagesTable1704067200000, AddUniqueConstraintToUrl1735689600000 };
10
+ export { Page };
11
+ //# sourceMappingURL=migration.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.config.d.ts","sourceRoot":"","sources":["../../../../src/migrations/migration.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,EAAE,qCAAqC,EAAE,MAAM,0CAA0C,CAAC;AAMjG,eAAO,MAAM,oBAAoB;;;;CAIhC,CAAC;AAKF,OAAO,EAAE,6BAA6B,EAAE,qCAAqC,EAAE,CAAC;AAKhF,OAAO,EAAE,IAAI,EAAE,CAAC"}