summaryrefslogtreecommitdiff
path: root/packages/backend/src/models/Instance.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-09-20 11:33:36 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-09-20 11:33:36 +0900
commit053da10e94c2412f58215116a958c0922261a610 (patch)
treed608ce6350d5b209178390c3ab56c1fd0d30c438 /packages/backend/src/models/Instance.ts
parentfix (diff)
downloadmisskey-053da10e94c2412f58215116a958c0922261a610.tar.gz
misskey-053da10e94c2412f58215116a958c0922261a610.tar.bz2
misskey-053da10e94c2412f58215116a958c0922261a610.zip
refactor(backend): update directory structure for models
Diffstat (limited to 'packages/backend/src/models/Instance.ts')
-rw-r--r--packages/backend/src/models/Instance.ts147
1 files changed, 147 insertions, 0 deletions
diff --git a/packages/backend/src/models/Instance.ts b/packages/backend/src/models/Instance.ts
new file mode 100644
index 0000000000..b225d918d6
--- /dev/null
+++ b/packages/backend/src/models/Instance.ts
@@ -0,0 +1,147 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and other misskey contributors
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { Entity, PrimaryColumn, Index, Column } from 'typeorm';
+import { id } from './util/id.js';
+
+@Entity('instance')
+export class MiInstance {
+ @PrimaryColumn(id())
+ public id: string;
+
+ /**
+ * このインスタンスを捕捉した日時
+ */
+ @Index()
+ @Column('timestamp with time zone', {
+ comment: 'The caught date of the Instance.',
+ })
+ public firstRetrievedAt: Date;
+
+ /**
+ * ホスト
+ */
+ @Index({ unique: true })
+ @Column('varchar', {
+ length: 128,
+ comment: 'The host of the Instance.',
+ })
+ public host: string;
+
+ /**
+ * インスタンスのユーザー数
+ */
+ @Column('integer', {
+ default: 0,
+ comment: 'The count of the users of the Instance.',
+ })
+ public usersCount: number;
+
+ /**
+ * インスタンスの投稿数
+ */
+ @Column('integer', {
+ default: 0,
+ comment: 'The count of the notes of the Instance.',
+ })
+ public notesCount: number;
+
+ /**
+ * このインスタンスのユーザーからフォローされている、自インスタンスのユーザーの数
+ */
+ @Column('integer', {
+ default: 0,
+ })
+ public followingCount: number;
+
+ /**
+ * このインスタンスのユーザーをフォローしている、自インスタンスのユーザーの数
+ */
+ @Column('integer', {
+ default: 0,
+ })
+ public followersCount: number;
+
+ /**
+ * 直近のリクエスト受信日時
+ */
+ @Column('timestamp with time zone', {
+ nullable: true,
+ })
+ public latestRequestReceivedAt: Date | null;
+
+ /**
+ * このインスタンスと不通かどうか
+ */
+ @Column('boolean', {
+ default: false,
+ })
+ public isNotResponding: boolean;
+
+ /**
+ * このインスタンスへの配信を停止するか
+ */
+ @Index()
+ @Column('boolean', {
+ default: false,
+ })
+ public isSuspended: boolean;
+
+ @Column('varchar', {
+ length: 64, nullable: true,
+ comment: 'The software of the Instance.',
+ })
+ public softwareName: string | null;
+
+ @Column('varchar', {
+ length: 64, nullable: true,
+ })
+ public softwareVersion: string | null;
+
+ @Column('boolean', {
+ nullable: true,
+ })
+ public openRegistrations: boolean | null;
+
+ @Column('varchar', {
+ length: 256, nullable: true,
+ })
+ public name: string | null;
+
+ @Column('varchar', {
+ length: 4096, nullable: true,
+ })
+ public description: string | null;
+
+ @Column('varchar', {
+ length: 128, nullable: true,
+ })
+ public maintainerName: string | null;
+
+ @Column('varchar', {
+ length: 256, nullable: true,
+ })
+ public maintainerEmail: string | null;
+
+ @Column('varchar', {
+ length: 256, nullable: true,
+ })
+ public iconUrl: string | null;
+
+ @Column('varchar', {
+ length: 256, nullable: true,
+ })
+ public faviconUrl: string | null;
+
+ @Column('varchar', {
+ length: 64, nullable: true,
+ })
+ public themeColor: string | null;
+
+ @Column('timestamp with time zone', {
+ nullable: true,
+ })
+ public infoUpdatedAt: Date | null;
+}