itlab-internal-services 2.14.1 → 2.14.3

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 (54) hide show
  1. package/dist/functions/index.d.ts +0 -1
  2. package/dist/models/filter/limit.property.js +1 -1
  3. package/dist/models/filter/skip.property.js +1 -1
  4. package/dist/models/filter/sort-direction.property.js +1 -1
  5. package/dist/models/filter/sort-field.property.js +2 -1
  6. package/dist/models/thumbnail/alt.property.js +2 -1
  7. package/dist/models/thumbnail/background.property.js +1 -1
  8. package/dist/models/thumbnail/contain.property.js +2 -1
  9. package/dist/models/thumbnail/src.property.js +1 -1
  10. package/dist/modules/database/database.module.js +7 -9
  11. package/dist/modules/database/index.d.ts +1 -0
  12. package/dist/modules/database/index.js +3 -1
  13. package/dist/modules/database/lock-service/lock.schema.d.ts +8 -0
  14. package/dist/modules/database/lock-service/lock.schema.js +37 -0
  15. package/dist/modules/database/lock-service/lock.service.d.ts +12 -2
  16. package/dist/modules/database/lock-service/lock.service.js +11 -23
  17. package/dist/modules/database/model-service/dbs/hub-account.db.js +8 -13
  18. package/dist/modules/database/model-service/dbs/hub-books.db.js +5 -7
  19. package/dist/modules/database/model-service/dbs/hub-comments.db.js +5 -7
  20. package/dist/modules/database/model-service/dbs/hub-content.db.js +5 -12
  21. package/dist/modules/database/model-service/dbs/hub-demo-hive.db.js +5 -7
  22. package/dist/modules/database/model-service/dbs/hub-events.db.js +5 -8
  23. package/dist/modules/database/model-service/dbs/hub-hackschool.db.js +13 -21
  24. package/dist/modules/database/model-service/dbs/hub-newsroom.db.js +5 -8
  25. package/dist/modules/database/model-service/dbs/hub-podcasts.db.js +5 -7
  26. package/dist/modules/database/model-service/dbs/hub-team.db.js +5 -7
  27. package/dist/modules/database/model-service/dbs/hub-tech-radar.db.js +12 -17
  28. package/dist/modules/fetch/fetch.module.d.ts +0 -1
  29. package/dist/modules/fetch/fetch.module.js +9 -7
  30. package/dist/modules/mail/mail.module.d.ts +0 -1
  31. package/dist/modules/mail/mail.module.js +9 -7
  32. package/dist/transform/{to-boolean.transform.d.ts → boolean.transform.d.ts} +2 -2
  33. package/dist/transform/{to-boolean.transform.js → boolean.transform.js} +3 -8
  34. package/dist/transform/{to-image-url.transform.d.ts → image-url.transform.d.ts} +1 -1
  35. package/dist/transform/{to-image-url.transform.js → image-url.transform.js} +3 -4
  36. package/dist/transform/index.d.ts +6 -8
  37. package/dist/transform/index.js +13 -17
  38. package/dist/transform/{to-number.transform.d.ts → number.transform.d.ts} +1 -1
  39. package/dist/transform/{to-number.transform.js → number.transform.js} +2 -2
  40. package/dist/transform/string-array.transform.d.ts +15 -0
  41. package/dist/transform/string-array.transform.js +27 -0
  42. package/dist/transform/{to-string.transform.d.ts → string.transform.d.ts} +5 -2
  43. package/dist/transform/{to-string.transform.js → string.transform.js} +3 -4
  44. package/dist/transform/{to-timestamp.transform.d.ts → timestamp.transform.d.ts} +2 -2
  45. package/dist/transform/{to-timestamp.transform.js → timestamp.transform.js} +2 -2
  46. package/package.json +1 -1
  47. package/dist/functions/string-like.functions.d.ts +0 -21
  48. package/dist/functions/string-like.functions.js +0 -35
  49. package/dist/transform/cast-to-array.transform.d.ts +0 -20
  50. package/dist/transform/cast-to-array.transform.js +0 -32
  51. package/dist/transform/to-string-array.transform.d.ts +0 -16
  52. package/dist/transform/to-string-array.transform.js +0 -34
  53. package/dist/transform/to-string-like.transform.d.ts +0 -24
  54. package/dist/transform/to-string-like.transform.js +0 -31
@@ -1,4 +1,3 @@
1
1
  export { configureAxiosInstance } from './configure-axios-instance.function';
2
2
  export { createDuplicateChecker } from './create-duplicate-checker.function';
3
3
  export { createSchemaTransformer } from './create-schema-transformer.function';
4
- export {} from './string-like.functions';
@@ -9,5 +9,5 @@ const transform_1 = require("../../transform");
9
9
  * Creates a PropertyLimitDecorator with the given options.
10
10
  */
11
11
  function PropertyLimit() {
12
- return (0, common_1.applyDecorators)((0, swagger_1.ApiPropertyOptional)({ minimum: 0, default: 10, description: 'Die maximale Anzahl der Ergebnisse' }), (0, transform_1.TransformToNumber)({ default: 10, min: 0 }), (0, class_validator_1.IsOptional)(), (0, class_validator_1.Min)(0));
12
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiPropertyOptional)({ minimum: 0, default: 10, description: 'Die maximale Anzahl der Ergebnisse' }), (0, transform_1.NumberTransform)({ default: 10, min: 0 }), (0, class_validator_1.IsOptional)(), (0, class_validator_1.Min)(0));
13
13
  }
@@ -9,5 +9,5 @@ const transform_1 = require("../../transform");
9
9
  * Creates a PropertySkipDecorator with the given options.
10
10
  */
11
11
  function PropertySkip() {
12
- return (0, common_1.applyDecorators)((0, swagger_1.ApiPropertyOptional)({ minimum: 0, default: 0, description: 'Die Anzahl der zu überspringenden Ergebnisse' }), (0, transform_1.TransformToNumber)({ default: 0, min: 0 }), (0, class_validator_1.IsOptional)(), (0, class_validator_1.Min)(0));
12
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiPropertyOptional)({ minimum: 0, default: 0, description: 'Die Anzahl der zu überspringenden Ergebnisse' }), (0, transform_1.NumberTransform)({ default: 0, min: 0 }), (0, class_validator_1.IsOptional)(), (0, class_validator_1.Min)(0));
13
13
  }
@@ -15,5 +15,5 @@ function PropertySortDirection() {
15
15
  asc: { value: 1, summary: 'Aufsteigend' },
16
16
  desc: { value: -1, summary: 'Absteigend (Standard)' },
17
17
  },
18
- }), (0, transform_1.TransformToNumber)({ default: -1, min: -1, max: 1 }), (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsIn)([-1, 1]));
18
+ }), (0, transform_1.NumberTransform)({ default: -1, min: -1, max: 1 }), (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsIn)([-1, 1]));
19
19
  }
@@ -4,6 +4,7 @@ exports.PropertySortField = PropertySortField;
4
4
  const common_1 = require("@nestjs/common");
5
5
  const swagger_1 = require("@nestjs/swagger");
6
6
  const class_validator_1 = require("class-validator");
7
+ const transform_1 = require("../../transform");
7
8
  /**
8
9
  * Creates a PropertySortFieldDecorator with the given options.
9
10
  */
@@ -12,5 +13,5 @@ function PropertySortField() {
12
13
  description: 'Das Feld, nach dem sortiert werden soll',
13
14
  default: '_id',
14
15
  example: 'title',
15
- }), (0, class_validator_1.IsOptional)(), (0, class_validator_1.MinLength)(1));
16
+ }), (0, transform_1.StringTransform)({ trim: true }), (0, class_validator_1.IsOptional)(), (0, class_validator_1.MinLength)(1));
16
17
  }
@@ -4,6 +4,7 @@ exports.ThumbnailAlt = ThumbnailAlt;
4
4
  const common_1 = require("@nestjs/common");
5
5
  const swagger_1 = require("@nestjs/swagger");
6
6
  const class_validator_1 = require("class-validator");
7
+ const transform_1 = require("../../transform");
7
8
  /**
8
9
  * Creates a ThumbnailAltDecorator with the given options.
9
10
  *
@@ -13,7 +14,7 @@ const class_validator_1 = require("class-validator");
13
14
  function ThumbnailAlt(options = {}) {
14
15
  return (0, common_1.applyDecorators)(
15
16
  /** ApiProperty with the given options */
16
- (0, swagger_1.ApiProperty)(Object.assign({ example: 'Eine Person mit einem Kissen' }, options)),
17
+ (0, swagger_1.ApiProperty)(Object.assign({ example: 'Eine Person mit einem Kissen' }, options)), (0, transform_1.StringTransform)({ trim: true }),
17
18
  /** Check if the length is at least 3 */
18
19
  (0, class_validator_1.MinLength)(3, { message: 'Der Alternativtext muss mindestens 3 Zeichen lang sein' }));
19
20
  }
@@ -20,7 +20,7 @@ function ThumbnailBackground(options = {}) {
20
20
  Farbverlauf: { value: ['#e74c3c', '#c0392b'] },
21
21
  } }, options)),
22
22
  /** Transform the string array */
23
- (0, transform_1.TransformToStringArray)(),
23
+ (0, transform_1.StringArrayTransform)({ trim: true }),
24
24
  /** Check if the value is a HEX color */
25
25
  (0, class_validator_1.IsHexColor)({ each: true, message: 'Die Hintergrundfarbe muss eine HEX Farbe sein' }),
26
26
  /** Check if the value is an array */
@@ -4,6 +4,7 @@ exports.ThumbnailContain = ThumbnailContain;
4
4
  const common_1 = require("@nestjs/common");
5
5
  const swagger_1 = require("@nestjs/swagger");
6
6
  const class_validator_1 = require("class-validator");
7
+ const transform_1 = require("../../transform");
7
8
  /**
8
9
  * Creates a ThumbnailContainDecorator with the given options.
9
10
  *
@@ -13,7 +14,7 @@ const class_validator_1 = require("class-validator");
13
14
  function ThumbnailContain(options = {}) {
14
15
  return (0, common_1.applyDecorators)(
15
16
  /** ApiProperty with the given options */
16
- (0, swagger_1.ApiProperty)(Object.assign({ description: 'Gibt an, ob das Bild gecroppt oder komplett angezeigt werden soll', example: false }, options)),
17
+ (0, swagger_1.ApiProperty)(Object.assign({ description: 'Gibt an, ob das Bild gecroppt oder komplett angezeigt werden soll', example: false }, options)), (0, transform_1.BooleanTransform)(),
17
18
  /** Check if the value is a boolean */
18
19
  (0, class_validator_1.IsBoolean)({ message: 'Contain muss als Boolean übergeben werden' }));
19
20
  }
@@ -16,7 +16,7 @@ function ThumbnailSrc(options = {}) {
16
16
  /** ApiProperty with the given options */
17
17
  (0, swagger_1.ApiProperty)(Object.assign({ example: 'https://example.com/image' }, options)),
18
18
  /** Transform the URL */
19
- (0, transform_1.TransformToImageUrl)(),
19
+ (0, transform_1.ImageUrlTransform)(),
20
20
  /** Check if the URL starts with https */
21
21
  (0, class_validator_1.IsUrl)({ protocols: ['https'], require_protocol: true }, { message: 'Die URL muss mit https beginnen' }));
22
22
  }
@@ -24,6 +24,7 @@ const common_1 = require("@nestjs/common");
24
24
  const mongoose_1 = require("@nestjs/mongoose");
25
25
  const mongoose_2 = __importDefault(require("mongoose"));
26
26
  const database_liveness_controller_1 = require("./database.liveness-controller");
27
+ const lock_service_1 = require("./lock-service/lock.service");
27
28
  const model_service_1 = require("./model-service/model.service");
28
29
  const populate_service_1 = require("./populate-service/populate.service");
29
30
  const service_mapper_service_1 = require("./service-mapper-service/service-mapper.service");
@@ -33,11 +34,7 @@ let DatabaseModule = DatabaseModule_1 = class DatabaseModule {
33
34
  }
34
35
  static forRoot(options) {
35
36
  return {
36
- global: true,
37
37
  module: DatabaseModule_1,
38
- providers: [model_service_1.ModelService, populate_service_1.PopulateService, service_mapper_service_1.ServiceMapperService],
39
- exports: [model_service_1.ModelService, populate_service_1.PopulateService, service_mapper_service_1.ServiceMapperService],
40
- controllers: [database_liveness_controller_1.DatabaseLivenessProbe],
41
38
  imports: [
42
39
  mongoose_1.MongooseModule.forRootAsync({
43
40
  useFactory: () => {
@@ -49,11 +46,7 @@ let DatabaseModule = DatabaseModule_1 = class DatabaseModule {
49
46
  }
50
47
  static forRootAsync(asyncOptions) {
51
48
  return {
52
- global: true,
53
49
  module: DatabaseModule_1,
54
- providers: [model_service_1.ModelService, populate_service_1.PopulateService, service_mapper_service_1.ServiceMapperService],
55
- exports: [model_service_1.ModelService, populate_service_1.PopulateService, service_mapper_service_1.ServiceMapperService],
56
- controllers: [database_liveness_controller_1.DatabaseLivenessProbe],
57
50
  imports: [
58
51
  mongoose_1.MongooseModule.forRootAsync({
59
52
  inject: asyncOptions.inject,
@@ -72,5 +65,10 @@ let DatabaseModule = DatabaseModule_1 = class DatabaseModule {
72
65
  };
73
66
  exports.DatabaseModule = DatabaseModule;
74
67
  exports.DatabaseModule = DatabaseModule = DatabaseModule_1 = __decorate([
75
- (0, common_1.Module)({})
68
+ (0, common_1.Global)(),
69
+ (0, common_1.Module)({
70
+ providers: [model_service_1.ModelService, populate_service_1.PopulateService, service_mapper_service_1.ServiceMapperService, lock_service_1.LockService],
71
+ exports: [model_service_1.ModelService, populate_service_1.PopulateService, service_mapper_service_1.ServiceMapperService, lock_service_1.LockService],
72
+ controllers: [database_liveness_controller_1.DatabaseLivenessProbe],
73
+ })
76
74
  ], DatabaseModule);
@@ -1,5 +1,6 @@
1
1
  export { DatabaseModuleOptions } from './database-module-options.interface';
2
2
  export { DatabaseModule } from './database.module';
3
+ export { LockService } from './lock-service/lock.service';
3
4
  export { ModelService } from './model-service/model.service';
4
5
  export { PopulateService } from './populate-service/populate.service';
5
6
  export { ServiceMapperService } from './service-mapper-service/service-mapper.service';
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ServiceMapperService = exports.PopulateService = exports.ModelService = exports.DatabaseModule = void 0;
3
+ exports.ServiceMapperService = exports.PopulateService = exports.ModelService = exports.LockService = exports.DatabaseModule = void 0;
4
4
  var database_module_1 = require("./database.module");
5
5
  Object.defineProperty(exports, "DatabaseModule", { enumerable: true, get: function () { return database_module_1.DatabaseModule; } });
6
+ var lock_service_1 = require("./lock-service/lock.service");
7
+ Object.defineProperty(exports, "LockService", { enumerable: true, get: function () { return lock_service_1.LockService; } });
6
8
  var model_service_1 = require("./model-service/model.service");
7
9
  Object.defineProperty(exports, "ModelService", { enumerable: true, get: function () { return model_service_1.ModelService; } });
8
10
  var populate_service_1 = require("./populate-service/populate.service");
@@ -0,0 +1,8 @@
1
+ import { ModelDefinition } from '@nestjs/mongoose';
2
+ import { Document } from 'mongoose';
3
+ export declare class Lock extends Document {
4
+ lockKey: string;
5
+ serviceId: string;
6
+ expiresAt: Date;
7
+ }
8
+ export declare const LockDefinition: ModelDefinition;
@@ -0,0 +1,37 @@
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.LockDefinition = exports.Lock = void 0;
13
+ const mongoose_1 = require("@nestjs/mongoose");
14
+ const mongoose_2 = require("mongoose");
15
+ let Lock = class Lock extends mongoose_2.Document {
16
+ };
17
+ exports.Lock = Lock;
18
+ __decorate([
19
+ (0, mongoose_1.Prop)({ required: true, unique: true }),
20
+ __metadata("design:type", String)
21
+ ], Lock.prototype, "lockKey", void 0);
22
+ __decorate([
23
+ (0, mongoose_1.Prop)({ required: true }),
24
+ __metadata("design:type", String)
25
+ ], Lock.prototype, "serviceId", void 0);
26
+ __decorate([
27
+ (0, mongoose_1.Prop)({ required: true, expires: 0 }),
28
+ __metadata("design:type", Date)
29
+ ], Lock.prototype, "expiresAt", void 0);
30
+ exports.Lock = Lock = __decorate([
31
+ (0, mongoose_1.Schema)({ collection: 'locks', timestamps: true })
32
+ ], Lock);
33
+ const LockSchema = mongoose_1.SchemaFactory.createForClass(Lock);
34
+ exports.LockDefinition = {
35
+ name: Lock.name,
36
+ schema: LockSchema,
37
+ };
@@ -1,14 +1,24 @@
1
+ import { OnModuleInit } from '@nestjs/common';
1
2
  import { Connection } from 'mongoose';
2
- export declare class LockService {
3
+ /**
4
+ * LockService
5
+ *
6
+ * This service manages distributed locks using MongoDB. Each lock is uniquely identified by a `lockKey`
7
+ * and associated with a service via `serviceId`. Locks ensure that only one service instance can perform
8
+ * operations on a given resource at any time. Locks are automatically released after a specified timeout
9
+ * to prevent deadlocks.
10
+ */
11
+ export declare class LockService implements OnModuleInit {
3
12
  private readonly databaseConnection;
4
13
  private readonly logger;
5
14
  private readonly serviceId;
6
15
  private readonly lockDuration;
7
16
  constructor(databaseConnection: Connection);
17
+ onModuleInit(): Promise<void>;
8
18
  /**
9
19
  * Retrieves the lock model from the database connection.
10
20
  *
11
- * @returns The Mongoose model for the Lock schema
21
+ * @returns {Model<Lock>} The Mongoose model for the Lock schema
12
22
  */
13
23
  private get lockModel();
14
24
  /**
@@ -27,6 +27,7 @@ const common_1 = require("@nestjs/common");
27
27
  const mongoose_1 = require("@nestjs/mongoose");
28
28
  const crypto_1 = require("crypto");
29
29
  const mongoose_2 = require("mongoose");
30
+ const lock_schema_1 = require("./lock.schema");
30
31
  /**
31
32
  * LockService
32
33
  *
@@ -35,23 +36,6 @@ const mongoose_2 = require("mongoose");
35
36
  * operations on a given resource at any time. Locks are automatically released after a specified timeout
36
37
  * to prevent deadlocks.
37
38
  */
38
- let Lock = class Lock extends Document {
39
- };
40
- __decorate([
41
- (0, mongoose_1.Prop)({ required: true, unique: true }),
42
- __metadata("design:type", String)
43
- ], Lock.prototype, "lockKey", void 0);
44
- __decorate([
45
- (0, mongoose_1.Prop)({ required: true }),
46
- __metadata("design:type", String)
47
- ], Lock.prototype, "serviceId", void 0);
48
- __decorate([
49
- (0, mongoose_1.Prop)({ required: true, expires: 0 }),
50
- __metadata("design:type", Date)
51
- ], Lock.prototype, "expiresAt", void 0);
52
- Lock = __decorate([
53
- (0, mongoose_1.Schema)({ collection: 'locks' })
54
- ], Lock);
55
39
  let LockService = LockService_1 = class LockService {
56
40
  constructor(databaseConnection) {
57
41
  this.databaseConnection = databaseConnection;
@@ -59,14 +43,18 @@ let LockService = LockService_1 = class LockService {
59
43
  this.serviceId = (0, crypto_1.randomUUID)(); // Unique identifier for this service instance
60
44
  this.lockDuration = 300000; // Duration for which a lock is held (5 minutes)
61
45
  }
46
+ onModuleInit() {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ yield this.lockModel.init();
49
+ });
50
+ }
62
51
  /**
63
52
  * Retrieves the lock model from the database connection.
64
53
  *
65
- * @returns The Mongoose model for the Lock schema
54
+ * @returns {Model<Lock>} The Mongoose model for the Lock schema
66
55
  */
67
56
  get lockModel() {
68
- const schema = mongoose_1.SchemaFactory.createForClass(Lock);
69
- return this.databaseConnection.model(Lock.name, schema);
57
+ return this.databaseConnection.model(lock_schema_1.LockDefinition.name, lock_schema_1.LockDefinition.schema);
70
58
  }
71
59
  /**
72
60
  * Attempts to acquire a lock for a given key.
@@ -79,12 +67,12 @@ let LockService = LockService_1 = class LockService {
79
67
  */
80
68
  acquireLock(lockKey) {
81
69
  return __awaiter(this, void 0, void 0, function* () {
82
- const currentTime = new Date();
83
- const expiresAt = new Date(currentTime.getTime() + this.lockDuration);
70
+ const currentDate = new Date();
71
+ const expiresAt = new Date(currentDate.getTime() + this.lockDuration);
84
72
  this.logger.log(`Attempting to acquire lock for ${lockKey}`);
85
73
  return new Promise((resolve) => {
86
74
  this.lockModel
87
- .findOneAndUpdate({ lockKey, serviceId: { $exists: false }, expiresAt: { $lt: currentTime } }, { $set: { lockKey, serviceId: this.serviceId, expiresAt } }, { upsert: true, new: true })
75
+ .findOneAndUpdate({ lockKey, serviceId: { $exists: false }, expiresAt: { $lt: currentDate } }, { $set: { lockKey, serviceId: this.serviceId, expiresAt } }, { upsert: true, new: true })
88
76
  .then((result) => {
89
77
  if (result.serviceId !== this.serviceId) {
90
78
  this.logger.log(`Failed to acquire lock (${lockKey}): Another service has already locked this item`);
@@ -12,19 +12,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.AccountDB = void 0;
13
13
  const mongoose_1 = require("@nestjs/mongoose");
14
14
  const mongoose_2 = require("mongoose");
15
- const transform = {
16
- virtuals: true,
17
- transform: (_, ret) => {
18
- const account = {
19
- id: ret.id,
20
- email: ret.email,
21
- username: ret.username,
22
- };
23
- if (ret.avatar)
24
- account.avatar = `https://file.svi-itlab.com/avatar/${ret._id}`;
25
- return account;
26
- },
27
- };
15
+ const functions_1 = require("../../../../functions");
16
+ const transform = (0, functions_1.createSchemaTransformer)((doc) => {
17
+ const { _id, email, username, avatar } = doc;
18
+ const account = { id: _id.toString(), email: email, username: username };
19
+ if (avatar)
20
+ account.avatar = `https://file.svi-itlab.com/avatar/${_id}`;
21
+ return account;
22
+ });
28
23
  let AccountModel = class AccountModel extends mongoose_2.Document {
29
24
  };
30
25
  __decorate([
@@ -12,13 +12,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.BooksDB = void 0;
13
13
  const mongoose_1 = require("@nestjs/mongoose");
14
14
  const mongoose_2 = require("mongoose");
15
- const transform = {
16
- virtuals: true,
17
- transform: (_, { title, _hid }) => {
18
- const url = `https://www.svi-itlab.com/books/${_hid}`;
19
- return { title, url };
20
- },
21
- };
15
+ const functions_1 = require("../../../../functions");
16
+ const transform = (0, functions_1.createSchemaTransformer)((doc) => {
17
+ const { title, _hid } = doc;
18
+ return { title, url: `https://www.svi-itlab.com/books/${_hid}` };
19
+ });
22
20
  let BookModel = class BookModel extends mongoose_2.Document {
23
21
  };
24
22
  __decorate([
@@ -12,13 +12,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.CommentsDB = void 0;
13
13
  const mongoose_1 = require("@nestjs/mongoose");
14
14
  const mongoose_2 = require("mongoose");
15
- const transform = {
16
- virtuals: true,
17
- transform: (_, ret) => {
18
- const { html, timestamp, author, authorId, id, replies, reactions } = ret;
19
- return { html, timestamp, author, authorId, id, replies, reactions };
20
- },
21
- };
15
+ const functions_1 = require("../../../../functions");
16
+ const transform = (0, functions_1.createSchemaTransformer)((doc) => {
17
+ const { html, timestamp, author, authorId, id, replies, reactions } = doc;
18
+ return { html, timestamp, author, authorId, id, replies, reactions };
19
+ });
22
20
  let CommentModel = class CommentModel extends mongoose_2.Document {
23
21
  };
24
22
  __decorate([
@@ -12,18 +12,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.ContentDB = void 0;
13
13
  const mongoose_1 = require("@nestjs/mongoose");
14
14
  const mongoose_2 = require("mongoose");
15
- const transform = {
16
- virtuals: true,
17
- transform: (_, ret) => {
18
- if (ret.html)
19
- return ret.html;
20
- if (ret.json)
21
- return ret.json;
22
- if (ret.text)
23
- return ret.text;
24
- return ret;
25
- },
26
- };
15
+ const functions_1 = require("../../../../functions");
16
+ const transform = (0, functions_1.createSchemaTransformer)((doc) => {
17
+ const { html, json, text } = doc;
18
+ return html || json || text || doc;
19
+ });
27
20
  let ContentModel = class ContentModel extends mongoose_2.Document {
28
21
  };
29
22
  __decorate([
@@ -12,13 +12,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.DemoHiveDB = void 0;
13
13
  const mongoose_1 = require("@nestjs/mongoose");
14
14
  const mongoose_2 = require("mongoose");
15
- const transform = {
16
- virtuals: true,
17
- transform: (_, { title, _hid }) => {
18
- const url = `https://www.svi-itlab.com/demo-hive/${_hid}`;
19
- return { title, url };
20
- },
21
- };
15
+ const functions_1 = require("../../../../functions");
16
+ const transform = (0, functions_1.createSchemaTransformer)((doc) => {
17
+ const { title, _hid } = doc;
18
+ return { title, url: `https://www.svi-itlab.com/demo-hive/${_hid}` };
19
+ });
22
20
  let DemoModel = class DemoModel extends mongoose_2.Document {
23
21
  };
24
22
  __decorate([
@@ -12,14 +12,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.EventsDB = void 0;
13
13
  const mongoose_1 = require("@nestjs/mongoose");
14
14
  const mongoose_2 = require("mongoose");
15
- const transform = {
16
- virtuals: true,
17
- transform: (_, { _hid, _month, _year, title }) => {
18
- const month = _month.toString().padStart(2, '0');
19
- const url = `https://www.svi-itlab.com/events/${_year}/${month}/${_hid}`;
20
- return { title, url };
21
- },
22
- };
15
+ const functions_1 = require("../../../../functions");
16
+ const transform = (0, functions_1.createSchemaTransformer)((doc) => {
17
+ const { _hid, _month, _year, title } = doc;
18
+ return { title, url: `https://www.svi-itlab.com/events/${_year}/${_month.toString().padStart(2, '0')}/${_hid}` };
19
+ });
23
20
  let EventModel = class EventModel extends mongoose_2.Document {
24
21
  };
25
22
  __decorate([
@@ -12,13 +12,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.HackschoolDB = void 0;
13
13
  const mongoose_1 = require("@nestjs/mongoose");
14
14
  const mongoose_2 = require("mongoose");
15
- const transformCourse = {
16
- virtuals: true,
17
- transform: (_, { title, _hid }) => {
18
- const url = `https://www.svi-itlab.com/hackschool/courses/${_hid}`;
19
- return { title, url };
20
- },
21
- };
15
+ const functions_1 = require("../../../../functions");
16
+ const transformCourse = (0, functions_1.createSchemaTransformer)((doc) => {
17
+ const { title, _hid } = doc;
18
+ return { title, url: `https://www.svi-itlab.com/hackschool/courses/${_hid}` };
19
+ });
22
20
  let CourseModel = class CourseModel extends mongoose_2.Document {
23
21
  };
24
22
  __decorate([
@@ -42,13 +40,10 @@ CourseModel = __decorate([
42
40
  ], CourseModel);
43
41
  const CourseSchema = mongoose_1.SchemaFactory.createForClass(CourseModel);
44
42
  // ================================================================================
45
- const transformDoc = {
46
- virtuals: true,
47
- transform: (_, { title, _hid }) => {
48
- const url = `https://www.svi-itlab.com/hackschool/tips-tricks/${_hid}`;
49
- return { title, url };
50
- },
51
- };
43
+ const transformDoc = (0, functions_1.createSchemaTransformer)((doc) => {
44
+ const { title, _hid } = doc;
45
+ return { title, url: `https://www.svi-itlab.com/hackschool/tips-tricks/${_hid}` };
46
+ });
52
47
  let DocModel = class DocModel extends mongoose_2.Document {
53
48
  };
54
49
  __decorate([
@@ -76,13 +71,10 @@ DocModel = __decorate([
76
71
  ], DocModel);
77
72
  const DocSchema = mongoose_1.SchemaFactory.createForClass(DocModel);
78
73
  // ================================================================================
79
- const transformThread = {
80
- virtuals: true,
81
- transform: (_, { title, _hid }) => {
82
- const url = `https://www.svi-itlab.com/hackschool/forums/${_hid}`;
83
- return { title, url };
84
- },
85
- };
74
+ const transformThread = (0, functions_1.createSchemaTransformer)((doc) => {
75
+ const { title, _hid } = doc;
76
+ return { title, url: `https://www.svi-itlab.com/hackschool/forums/${_hid}` };
77
+ });
86
78
  let ThreadModel = class ThreadModel extends mongoose_2.Document {
87
79
  };
88
80
  __decorate([
@@ -12,14 +12,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.NewsroomDB = void 0;
13
13
  const mongoose_1 = require("@nestjs/mongoose");
14
14
  const mongoose_2 = require("mongoose");
15
- const transform = {
16
- virtuals: true,
17
- transform: (_, { _hid, _month, _year, title }) => {
18
- const month = _month.toString().padStart(2, '0');
19
- const url = `https://www.svi-itlab.com/newsroom/${_year}/${month}/${_hid}`;
20
- return { title, url };
21
- },
22
- };
15
+ const functions_1 = require("../../../../functions");
16
+ const transform = (0, functions_1.createSchemaTransformer)((doc) => {
17
+ const { title, _hid, _month, _year } = doc;
18
+ return { title, url: `https://www.svi-itlab.com/newsroom/${_year}/${_month.toString().padStart(2, '0')}/${_hid}` };
19
+ });
23
20
  let NewsModel = class NewsModel extends mongoose_2.Document {
24
21
  };
25
22
  __decorate([
@@ -12,13 +12,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.PodcastsDB = void 0;
13
13
  const mongoose_1 = require("@nestjs/mongoose");
14
14
  const mongoose_2 = require("mongoose");
15
- const transform = {
16
- virtuals: true,
17
- transform: (_, { title, _hid }) => {
18
- const url = `https://www.svi-itlab.com/podcasts/${_hid}`;
19
- return { title, url };
20
- },
21
- };
15
+ const functions_1 = require("../../../../functions");
16
+ const transform = (0, functions_1.createSchemaTransformer)((doc) => {
17
+ const { title, _hid } = doc;
18
+ return { title, url: `https://www.svi-itlab.com/podcasts/${_hid}` };
19
+ });
22
20
  let PodcastModel = class PodcastModel extends mongoose_2.Document {
23
21
  };
24
22
  __decorate([
@@ -12,13 +12,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.TeamDB = void 0;
13
13
  const mongoose_1 = require("@nestjs/mongoose");
14
14
  const mongoose_2 = require("mongoose");
15
- const transform = {
16
- virtuals: true,
17
- transform: (_, { name, _hid }) => {
18
- const url = `https://www.svi-itlab.com/team/${_hid}`;
19
- return { title: name, url };
20
- },
21
- };
15
+ const functions_1 = require("../../../../functions");
16
+ const transform = (0, functions_1.createSchemaTransformer)((doc) => {
17
+ const { name: title, _hid } = doc;
18
+ return { title, url: `https://www.svi-itlab.com/team/${_hid}` };
19
+ });
22
20
  let MemberModel = class MemberModel extends mongoose_2.Document {
23
21
  };
24
22
  __decorate([
@@ -12,13 +12,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.TechRadarDB = void 0;
13
13
  const mongoose_1 = require("@nestjs/mongoose");
14
14
  const mongoose_2 = require("mongoose");
15
- const transformBlip = {
16
- virtuals: true,
17
- transform: (_, { title, _hid }) => {
18
- const url = `https://www.svi-itlab.com/tech-radar/blips/${_hid}`;
19
- return { title, url };
20
- },
21
- };
15
+ const functions_1 = require("../../../../functions");
16
+ const transformBlip = (0, functions_1.createSchemaTransformer)((doc) => {
17
+ const { title, _hid } = doc;
18
+ return { title, url: `https://www.svi-itlab.com/tech-radar/blips/${_hid}` };
19
+ });
22
20
  let BlipModel = class BlipModel extends mongoose_2.Document {
23
21
  };
24
22
  __decorate([
@@ -42,16 +40,13 @@ BlipModel = __decorate([
42
40
  ], BlipModel);
43
41
  const BlipSchema = mongoose_1.SchemaFactory.createForClass(BlipModel);
44
42
  // ================================================================================
45
- const toTitle = Intl.DateTimeFormat('de-DE', { month: 'long', year: 'numeric' }).format;
46
- const transformRadar = {
47
- virtuals: true,
48
- transform: (_, { _month, _year, timestamp }) => {
49
- const month = _month.toString().padStart(2, '0');
50
- const url = `https://www.svi-itlab.com/tech-radar/editions/${_year}/${month}`;
51
- const title = toTitle(timestamp);
52
- return { title, url };
53
- },
54
- };
43
+ const transformRadar = (0, functions_1.createSchemaTransformer)((doc) => {
44
+ const { _month, _year, timestamp } = doc;
45
+ return {
46
+ title: Intl.DateTimeFormat('de-DE', { month: 'long', year: 'numeric' }).format(timestamp),
47
+ url: `https://www.svi-itlab.com/tech-radar/editions/${_year}/${_month.toString().padStart(2, '0')}`,
48
+ };
49
+ });
55
50
  let RadarModel = class RadarModel extends mongoose_2.Document {
56
51
  };
57
52
  __decorate([
@@ -6,5 +6,4 @@ import { DynamicModule } from '@nestjs/common';
6
6
  export declare class FetchModule {
7
7
  static forRoot(): DynamicModule;
8
8
  static register(): DynamicModule;
9
- private static generateModule;
10
9
  }