@punks/backend-entity-manager 0.0.392 → 0.0.394

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.
@@ -3,10 +3,9 @@ import { EntityServiceLocator } from "../providers/services";
3
3
  export declare class EntityUpsertCommand<TEntity, TEntityId, TEntityUpdateData> implements IEntityUpsertCommand<TEntity, TEntityId, TEntityUpdateData> {
4
4
  private readonly services;
5
5
  constructor(services: EntityServiceLocator<TEntity, TEntityId>);
6
- execute(id: TEntityId, data: TEntityUpdateData): Promise<{
7
- id: TEntityId;
6
+ execute(id: TEntityId | undefined, data: TEntityUpdateData): Promise<{
7
+ id: any;
8
8
  }>;
9
- private upsertEntity;
10
9
  private adaptEntity;
11
10
  private authorize;
12
11
  private getContext;
@@ -10,6 +10,7 @@ export declare class TasksInitializer implements IAppInitializer {
10
10
  private readonly logger;
11
11
  constructor(discover: CustomDiscoveryService, scheduler: TaskScheduler, registry: TasksRegistry);
12
12
  initialize(app: INestApplicationContext): Promise<void>;
13
+ private get tasksSettings();
13
14
  private registerCronJobs;
14
15
  private discoverTasks;
15
16
  }
@@ -1,7 +1,9 @@
1
- import { OnModuleDestroy } from "@nestjs/common";
1
+ import { DynamicModule, OnModuleDestroy } from "@nestjs/common";
2
2
  import { TaskScheduler } from "./providers/scheduler";
3
+ import { TasksModuleSettings } from "./settings";
3
4
  export declare class TasksModule implements OnModuleDestroy {
4
5
  private readonly scheduler;
5
6
  constructor(scheduler: TaskScheduler);
7
+ static forRoot(input: TasksModuleSettings): DynamicModule;
6
8
  onModuleDestroy(): void;
7
9
  }
@@ -0,0 +1,5 @@
1
+ import { AppInMemorySettings } from "../../../../../settings";
2
+ export type TasksModuleSettings = {
3
+ enabled?: boolean;
4
+ };
5
+ export declare const tasksSettings: AppInMemorySettings<TasksModuleSettings>;
package/dist/esm/index.js CHANGED
@@ -1100,37 +1100,53 @@ class EntityUpsertCommand {
1100
1100
  this.services = services;
1101
1101
  }
1102
1102
  async execute(id, data) {
1103
- const entity = await this.adaptEntity(data);
1103
+ const entity = await this.adaptEntity(id, data);
1104
1104
  await this.authorize(id, entity);
1105
- const updatedEntity = await this.upsertEntity(id, entity);
1106
- await this.versionEntity(id, updatedEntity);
1105
+ if (id) {
1106
+ const updatedEntity = await this.services
1107
+ .resolveRepository()
1108
+ .upsert(id, entity);
1109
+ await this.versionEntity(id, updatedEntity);
1110
+ await this.services
1111
+ .resolveEventsManager()
1112
+ .processEntityUpdatedEvent(updatedEntity);
1113
+ return {
1114
+ id,
1115
+ };
1116
+ }
1117
+ const createdItem = await this.services.resolveRepository().create(entity);
1118
+ // todo: parametrize id field
1119
+ const newId = createdItem.id;
1120
+ await this.versionEntity(newId, createdItem);
1107
1121
  await this.services
1108
1122
  .resolveEventsManager()
1109
- .processEntityUpdatedEvent(updatedEntity);
1123
+ .processEntityCreatedEvent(createdItem);
1110
1124
  return {
1111
- id,
1125
+ id: newId,
1112
1126
  };
1113
1127
  }
1114
- async upsertEntity(id, entity) {
1115
- return await this.services.resolveRepository().upsert(id, entity);
1116
- }
1117
- async adaptEntity(input) {
1128
+ async adaptEntity(id, input) {
1118
1129
  const context = await this.getContext();
1119
1130
  const adapter = this.services.resolveAdapter();
1120
- return adapter
1131
+ if (!adapter) {
1132
+ return input;
1133
+ }
1134
+ return id
1121
1135
  ? adapter.updateDataToEntity(input, context)
1122
- : input;
1136
+ : adapter.createDataToEntity(input, context);
1123
1137
  }
1124
1138
  async authorize(id, entity) {
1125
1139
  const authorization = this.services.resolveAuthorizationMiddleware();
1126
1140
  if (!authorization) {
1127
1141
  return;
1128
1142
  }
1129
- const currentEntity = await this.services.resolveRepository().get(id);
1130
1143
  const context = await this.getContext();
1131
1144
  if (!context) {
1132
1145
  return;
1133
1146
  }
1147
+ const currentEntity = id
1148
+ ? await this.services.resolveRepository().get(id)
1149
+ : undefined;
1134
1150
  if (currentEntity) {
1135
1151
  const updateResult = await authorization.canUpdate(currentEntity, context);
1136
1152
  if (!updateResult.isAuthorized)
@@ -2968,7 +2984,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
2968
2984
  };
2969
2985
 
2970
2986
  var AwsDynamoDbModule_1;
2971
- const ModuleData$a = {
2987
+ const ModuleData$b = {
2972
2988
  providers: [],
2973
2989
  exports: [],
2974
2990
  };
@@ -2977,13 +2993,13 @@ let AwsDynamoDbModule = AwsDynamoDbModule_1 = class AwsDynamoDbModule {
2977
2993
  awsDynamoDbSettings.initialize(input);
2978
2994
  return {
2979
2995
  module: AwsDynamoDbModule_1,
2980
- ...ModuleData$a,
2996
+ ...ModuleData$b,
2981
2997
  };
2982
2998
  }
2983
2999
  };
2984
3000
  AwsDynamoDbModule = AwsDynamoDbModule_1 = __decorate([
2985
3001
  Module({
2986
- ...ModuleData$a,
3002
+ ...ModuleData$b,
2987
3003
  })
2988
3004
  ], AwsDynamoDbModule);
2989
3005
 
@@ -24314,7 +24330,7 @@ const getIoCContext = () => {
24314
24330
  return _context;
24315
24331
  };
24316
24332
 
24317
- const ModuleData$9 = {
24333
+ const ModuleData$a = {
24318
24334
  imports: [CustomDiscoveryModule, EventEmitterModule],
24319
24335
  providers: [
24320
24336
  ...IoC,
@@ -24337,9 +24353,9 @@ let EntityManagerModule = class EntityManagerModule {
24337
24353
  };
24338
24354
  EntityManagerModule = __decorate([
24339
24355
  Module({
24340
- imports: ModuleData$9.imports,
24341
- providers: ModuleData$9.providers,
24342
- exports: ModuleData$9.exports,
24356
+ imports: ModuleData$a.imports,
24357
+ providers: ModuleData$a.providers,
24358
+ exports: ModuleData$a.exports,
24343
24359
  }),
24344
24360
  __metadata("design:paramtypes", [EntityManagerRegistry])
24345
24361
  ], EntityManagerModule);
@@ -24570,7 +24586,7 @@ AuthenticationMiddleware = __decorate([
24570
24586
  ], AuthenticationMiddleware);
24571
24587
 
24572
24588
  var AuthenticationModule_1;
24573
- const ModuleData$8 = {
24589
+ const ModuleData$9 = {
24574
24590
  imports: [EntityManagerModule, JwtModule],
24575
24591
  providers: [
24576
24592
  AuthenticationServicesResolver,
@@ -24587,7 +24603,7 @@ let AuthenticationModule = AuthenticationModule_1 = class AuthenticationModule {
24587
24603
  authSettings.initialize(input);
24588
24604
  return {
24589
24605
  module: AuthenticationModule_1,
24590
- ...ModuleData$8,
24606
+ ...ModuleData$9,
24591
24607
  };
24592
24608
  }
24593
24609
  configure(consumer) {
@@ -24600,7 +24616,7 @@ let AuthenticationModule = AuthenticationModule_1 = class AuthenticationModule {
24600
24616
  };
24601
24617
  AuthenticationModule = AuthenticationModule_1 = __decorate([
24602
24618
  Module({
24603
- ...ModuleData$8,
24619
+ ...ModuleData$9,
24604
24620
  })
24605
24621
  ], AuthenticationModule);
24606
24622
 
@@ -34802,7 +34818,7 @@ const JobResolverProviders = [JobsProviderFactory];
34802
34818
  const JobTasks = [JobsMonitorTask, JobsSchedulerTask];
34803
34819
 
34804
34820
  var JobsModule_1;
34805
- const ModuleData$7 = {
34821
+ const ModuleData$8 = {
34806
34822
  providers: [
34807
34823
  ...JobsProviders,
34808
34824
  ...JobTasks,
@@ -34826,13 +34842,13 @@ let JobsModule = JobsModule_1 = class JobsModule {
34826
34842
  jobsSettings.initialize(input);
34827
34843
  return {
34828
34844
  module: JobsModule_1,
34829
- ...ModuleData$7,
34845
+ ...ModuleData$8,
34830
34846
  };
34831
34847
  }
34832
34848
  };
34833
34849
  JobsModule = JobsModule_1 = __decorate([
34834
34850
  Module({
34835
- ...ModuleData$7,
34851
+ ...ModuleData$8,
34836
34852
  }),
34837
34853
  __metadata("design:paramtypes", [JobsScheduler,
34838
34854
  JobsProviderFactory])
@@ -34968,6 +34984,8 @@ TasksRegistry = __decorate([
34968
34984
  Injectable()
34969
34985
  ], TasksRegistry);
34970
34986
 
34987
+ const tasksSettings = new AppInMemorySettings("tasksSettings");
34988
+
34971
34989
  var TasksInitializer_1;
34972
34990
  let TasksInitializer = TasksInitializer_1 = class TasksInitializer {
34973
34991
  constructor(discover, scheduler, registry) {
@@ -34977,9 +34995,16 @@ let TasksInitializer = TasksInitializer_1 = class TasksInitializer {
34977
34995
  this.logger = new Logger(TasksInitializer_1.name);
34978
34996
  }
34979
34997
  async initialize(app) {
34998
+ if (this.tasksSettings?.enabled === false) {
34999
+ this.logger.log("Tasks disabled 🎰");
35000
+ return;
35001
+ }
34980
35002
  await this.registerCronJobs();
34981
35003
  this.logger.log("Tasks initialized 🎰");
34982
35004
  }
35005
+ get tasksSettings() {
35006
+ return tasksSettings.value;
35007
+ }
34983
35008
  async registerCronJobs() {
34984
35009
  const tasks = await this.discoverTasks();
34985
35010
  const duplicatedJobs = tasks.filter((job, index, self) => index !== self.findIndex((t) => t.meta.name === job.meta.name));
@@ -35046,19 +35071,30 @@ TasksService = TasksService_1 = __decorate([
35046
35071
 
35047
35072
  const TaskModuleServices = [TasksService];
35048
35073
 
35049
- let TasksModule = class TasksModule {
35074
+ var TasksModule_1;
35075
+ const ModuleData$7 = {
35076
+ imports: [EntityManagerModule],
35077
+ providers: [TasksInitializer, ...TasksModuleProviders, ...TaskModuleServices],
35078
+ exports: [...TaskModuleServices],
35079
+ };
35080
+ let TasksModule = TasksModule_1 = class TasksModule {
35050
35081
  constructor(scheduler) {
35051
35082
  this.scheduler = scheduler;
35052
35083
  }
35084
+ static forRoot(input) {
35085
+ tasksSettings.initialize(input);
35086
+ return {
35087
+ module: TasksModule_1,
35088
+ ...ModuleData$7,
35089
+ };
35090
+ }
35053
35091
  onModuleDestroy() {
35054
35092
  this.scheduler.stopAllTasks();
35055
35093
  }
35056
35094
  };
35057
- TasksModule = __decorate([
35095
+ TasksModule = TasksModule_1 = __decorate([
35058
35096
  Module({
35059
- imports: [EntityManagerModule],
35060
- providers: [TasksInitializer, ...TasksModuleProviders, ...TaskModuleServices],
35061
- exports: [...TaskModuleServices],
35097
+ ...ModuleData$7,
35062
35098
  }),
35063
35099
  __metadata("design:paramtypes", [TaskScheduler])
35064
35100
  ], TasksModule);