summaryrefslogtreecommitdiff
path: root/packages/backend/src/core/IdService.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-09-18 03:27:08 +0900
committerGitHub <noreply@github.com>2022-09-18 03:27:08 +0900
commitb75184ec8e3436200bacdcd832e3324702553d20 (patch)
tree8b7e316f29e95df921db57289c8b8da476d18f07 /packages/backend/src/core/IdService.ts
parentUpdate ROADMAP.md (diff)
downloadsharkey-b75184ec8e3436200bacdcd832e3324702553d20.tar.gz
sharkey-b75184ec8e3436200bacdcd832e3324702553d20.tar.bz2
sharkey-b75184ec8e3436200bacdcd832e3324702553d20.zip
なんかもうめっちゃ変えた
Diffstat (limited to 'packages/backend/src/core/IdService.ts')
-rw-r--r--packages/backend/src/core/IdService.ts33
1 files changed, 33 insertions, 0 deletions
diff --git a/packages/backend/src/core/IdService.ts b/packages/backend/src/core/IdService.ts
new file mode 100644
index 0000000000..b3b0d63627
--- /dev/null
+++ b/packages/backend/src/core/IdService.ts
@@ -0,0 +1,33 @@
+import { Inject, Injectable } from '@nestjs/common';
+import { ulid } from 'ulid';
+import { DI } from '@/di-symbols.js';
+import { Config } from '@/config.js';
+import { genAid } from '@/misc/id/aid.js';
+import { genMeid } from '@/misc/id/meid.js';
+import { genMeidg } from '@/misc/id/meidg.js';
+import { genObjectId } from '@/misc/id/object-id.js';
+
+@Injectable()
+export class IdService {
+ #metohd: string;
+
+ constructor(
+ @Inject(DI.config)
+ private config: Config,
+ ) {
+ this.#metohd = config.id.toLowerCase();
+ }
+
+ public genId(date?: Date): string {
+ if (!date || (date > new Date())) date = new Date();
+
+ switch (this.#metohd) {
+ case 'aid': return genAid(date);
+ case 'meid': return genMeid(date);
+ case 'meidg': return genMeidg(date);
+ case 'ulid': return ulid(date.getTime());
+ case 'objectid': return genObjectId(date);
+ default: throw new Error('unrecognized id generation method');
+ }
+ }
+}