@chevre/domain 25.0.0-alpha.22 → 25.0.0-alpha.23

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.
@@ -37,7 +37,7 @@ interface IOnTransactionStatusChanged {
37
37
  */
38
38
  informTransaction?: factory.project.IInformParams[];
39
39
  }
40
- interface IStorageSettings {
40
+ export interface IStorageSettings {
41
41
  /**
42
42
  * 取引保管期間(Confirmed)
43
43
  * default:365
@@ -85,7 +85,7 @@ interface ITriggerWebhookSettings {
85
85
  retryCountMax?: number;
86
86
  retryIntervalInMS?: number;
87
87
  }
88
- interface IWaiterSettings {
88
+ export interface IWaiterSettings {
89
89
  disabled?: boolean;
90
90
  passportUnavailable?: boolean;
91
91
  passportIssuers: string[];
@@ -0,0 +1,17 @@
1
+ import type { Connection } from 'mongoose';
2
+ import { IWaiterSettings } from '../mongoose/schemas/setting';
3
+ interface IDBOptions {
4
+ connection: Connection;
5
+ }
6
+ /**
7
+ * 流入制限設定リポジトリ
8
+ */
9
+ export declare class WaiterSettingRepo {
10
+ private readonly settingModel;
11
+ private static cachedSettings;
12
+ private static cacheExpiry;
13
+ private static readonly CACHE_TTL_MS;
14
+ constructor(options: IDBOptions);
15
+ findWaiterSetting(): Promise<IWaiterSettings | undefined>;
16
+ }
17
+ export {};
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WaiterSettingRepo = void 0;
4
+ const setting_1 = require("../mongoose/schemas/setting");
5
+ /**
6
+ * 流入制限設定リポジトリ
7
+ */
8
+ class WaiterSettingRepo {
9
+ settingModel;
10
+ // static にすることで、クラスが何回 new されてもメモリ上で1つだけ保持される
11
+ static cachedSettings;
12
+ static cacheExpiry = 0;
13
+ static CACHE_TTL_MS = 10 * 60 * 1000; // 10分
14
+ constructor(options) {
15
+ const { connection } = options;
16
+ this.settingModel = connection.model(setting_1.modelName, (0, setting_1.createSchema)());
17
+ }
18
+ async findWaiterSetting() {
19
+ const now = Date.now();
20
+ // キャッシュ参照
21
+ if (WaiterSettingRepo.cachedSettings !== undefined && now < WaiterSettingRepo.cacheExpiry) {
22
+ return WaiterSettingRepo.cachedSettings;
23
+ }
24
+ const settingDoc = await this.settingModel.findOne({ 'project.id': { $eq: '*' } }, {
25
+ _id: 0,
26
+ waiter: 1
27
+ })
28
+ .lean()
29
+ .exec();
30
+ // キャッシュを更新
31
+ if (settingDoc?.waiter !== undefined) {
32
+ console.log('document exist!', settingDoc);
33
+ WaiterSettingRepo.cachedSettings = settingDoc.waiter;
34
+ WaiterSettingRepo.cacheExpiry = now + WaiterSettingRepo.CACHE_TTL_MS;
35
+ }
36
+ return WaiterSettingRepo.cachedSettings;
37
+ }
38
+ }
39
+ exports.WaiterSettingRepo = WaiterSettingRepo;
@@ -1,7 +1,8 @@
1
1
  import type { Connection, FilterQuery } from 'mongoose';
2
- import { ISetting } from './mongoose/schemas/setting';
3
- type IKeyOfProjection = keyof ISetting;
4
- export { ISetting };
2
+ import { ISetting, IStorageSettings } from './mongoose/schemas/setting';
3
+ type IKeyOfProjection = Exclude<keyof ISetting, 'jwt' | 'project' | 'waiter' | 'integration'>;
4
+ type IGlobalSetting = Pick<ISetting, 'defaultSenderEmail' | 'onEventChanged' | 'onOrderStatusChanged' | 'onReservationStatusChanged' | 'onResourceUpdated' | 'onTaskStatusChanged' | 'onTransactionStatusChanged' | 'orderNumber' | 'quota' | 'serviceOutputIdentifier' | 'storage' | 'transactionNumber' | 'triggerWebhook' | 'useInformResourceTypes' | 'useMongo4confirmationNumberFrom' | 'useMongo4orderNumberFrom' | 'useMongo4transactionNumberFrom' | 'useMongoAsStockHolder' | 'useMongoAsStockHolderProjects' | 'userPoolIdNew' | 'userPoolIdOld'>;
5
+ export { IGlobalSetting as ISetting };
5
6
  /**
6
7
  * 設定リポジトリ
7
8
  */
@@ -15,14 +16,14 @@ export declare class SettingRepo {
15
16
  $eq?: string;
16
17
  };
17
18
  };
18
- }, inclusion: IKeyOfProjection[]): Promise<ISetting | null>;
19
- updateByProject(filter: {
20
- project: {
21
- id: {
22
- $eq: string;
23
- };
24
- };
25
- }, update: Pick<ISetting, 'onEventChanged' | 'onReservationStatusChanged' | 'onTaskStatusChanged' | 'onResourceUpdated' | 'defaultSenderEmail' | 'useInformResourceTypes' | 'userPoolIdNew' | 'userPoolIdOld' | 'storage' | 'quota' | 'triggerWebhook' | 'waiter' | 'orderNumber' | 'transactionNumber'>): Promise<import("mongoose").UpdateWriteOpResult>;
19
+ }, inclusion: IKeyOfProjection[]): Promise<IGlobalSetting | null>;
20
+ /**
21
+ * 初期設定追加専用
22
+ */
23
+ addGlobalStorageSettings(params: {
24
+ key: keyof IStorageSettings;
25
+ value: number;
26
+ }): Promise<import("mongoose").UpdateWriteOpResult>;
26
27
  unsetUnnecessaryFields(params: {
27
28
  filter: FilterQuery<ISetting>;
28
29
  $unset: any;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SettingRepo = void 0;
4
- // import { factory } from '../factory';
5
4
  const setting_1 = require("./mongoose/schemas/setting");
6
5
  /**
7
6
  * 設定リポジトリ
@@ -36,24 +35,13 @@ class SettingRepo {
36
35
  .lean()
37
36
  .exec();
38
37
  }
39
- async updateByProject(filter, update) {
40
- const { onEventChanged, onReservationStatusChanged, onTaskStatusChanged, onResourceUpdated, defaultSenderEmail, useInformResourceTypes, userPoolIdNew, userPoolIdOld, storage, quota, triggerWebhook, waiter, orderNumber, transactionNumber } = update;
41
- return this.settingModel.updateOne({ 'project.id': { $eq: filter.project.id.$eq } }, {
38
+ /**
39
+ * 初期設定追加専用
40
+ */
41
+ async addGlobalStorageSettings(params) {
42
+ return this.settingModel.updateOne({ 'project.id': { $eq: '*' } }, {
42
43
  $set: {
43
- ...(onEventChanged !== undefined) ? { onEventChanged } : undefined,
44
- ...(onReservationStatusChanged !== undefined) ? { onReservationStatusChanged } : undefined,
45
- ...(onTaskStatusChanged !== undefined) ? { onTaskStatusChanged } : undefined,
46
- ...(onResourceUpdated !== undefined) ? { onResourceUpdated } : undefined,
47
- ...(defaultSenderEmail !== undefined) ? { defaultSenderEmail } : undefined,
48
- ...(useInformResourceTypes !== undefined) ? { useInformResourceTypes } : undefined,
49
- ...(userPoolIdNew !== undefined) ? { userPoolIdNew } : undefined,
50
- ...(userPoolIdOld !== undefined) ? { userPoolIdOld } : undefined,
51
- ...(storage !== undefined) ? { storage } : undefined,
52
- ...(quota !== undefined) ? { quota } : undefined,
53
- ...(triggerWebhook !== undefined) ? { triggerWebhook } : undefined,
54
- ...(waiter !== undefined) ? { waiter } : undefined,
55
- ...(orderNumber !== undefined) ? { orderNumber } : undefined,
56
- ...(transactionNumber !== undefined) ? { transactionNumber } : undefined
44
+ [`storage.${params.key}`]: params.value
57
45
  }
58
46
  })
59
47
  .exec();
@@ -81,6 +81,7 @@ import type { ServiceAvailableHourRepo } from './repo/service/availableHour';
81
81
  import type { SettingRepo } from './repo/setting';
82
82
  import type { IntegrationSettingRepo } from './repo/setting/integration';
83
83
  import type { JWTSettingRepo } from './repo/setting/jwt';
84
+ import type { WaiterSettingRepo } from './repo/setting/waiter';
84
85
  import type { StockHolderRepo } from './repo/stockHolder';
85
86
  import type { TaskRepo } from './repo/task';
86
87
  import type { TicketRepo } from './repo/ticket';
@@ -446,6 +447,10 @@ export declare namespace setting {
446
447
  namespace JWT {
447
448
  function createInstance(...params: ConstructorParameters<typeof JWTSettingRepo>): Promise<JWTSettingRepo>;
448
449
  }
450
+ type Waiter = WaiterSettingRepo;
451
+ namespace Waiter {
452
+ function createInstance(...params: ConstructorParameters<typeof WaiterSettingRepo>): Promise<WaiterSettingRepo>;
453
+ }
449
454
  }
450
455
  export type StockHolder = StockHolderRepo;
451
456
  export declare namespace StockHolder {
@@ -933,6 +933,17 @@ var setting;
933
933
  }
934
934
  JWT.createInstance = createInstance;
935
935
  })(JWT = setting.JWT || (setting.JWT = {}));
936
+ let Waiter;
937
+ (function (Waiter) {
938
+ let repo;
939
+ async function createInstance(...params) {
940
+ if (repo === undefined) {
941
+ repo = (await import('./repo/setting/waiter.js')).WaiterSettingRepo;
942
+ }
943
+ return new repo(...params);
944
+ }
945
+ Waiter.createInstance = createInstance;
946
+ })(Waiter = setting.Waiter || (setting.Waiter = {}));
936
947
  })(setting || (exports.setting = setting = {}));
937
948
  var StockHolder;
938
949
  (function (StockHolder) {
package/package.json CHANGED
@@ -91,5 +91,5 @@
91
91
  "postversion": "git push origin --tags",
92
92
  "prepublishOnly": "npm run clean && npm run build"
93
93
  },
94
- "version": "25.0.0-alpha.22"
94
+ "version": "25.0.0-alpha.23"
95
95
  }