mirror of
https://iceshrimp.dev/limepotato/jormungandr-bite.git
synced 2024-11-24 19:07:32 -07:00
chore: format
This commit is contained in:
parent
ccc32339fa
commit
aaa2041d38
74 changed files with 1252 additions and 1079 deletions
|
@ -4,10 +4,5 @@
|
|||
"module": "commonjs",
|
||||
"allowSyntheticDefaultImports": true
|
||||
},
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"jspm_packages",
|
||||
"tmp",
|
||||
"temp"
|
||||
]
|
||||
"exclude": ["node_modules", "jspm_packages", "tmp", "temp"]
|
||||
}
|
||||
|
|
|
@ -4,6 +4,12 @@ import { convertId, IdConvertType } from "../built/index.js";
|
|||
|
||||
test("convert to mastodon id", (t) => {
|
||||
t.is(convertId("9gf61ehcxv", IdConvertType.MastodonId), "960365976481219");
|
||||
t.is(convertId("9fbr9z0wbrjqyd3u", IdConvertType.MastodonId), "3954607381600562394");
|
||||
t.is(convertId("9fbs680oyviiqrol9md73p8g", IdConvertType.MastodonId), "3494513243013053824")
|
||||
t.is(
|
||||
convertId("9fbr9z0wbrjqyd3u", IdConvertType.MastodonId),
|
||||
"3954607381600562394",
|
||||
);
|
||||
t.is(
|
||||
convertId("9fbs680oyviiqrol9md73p8g", IdConvertType.MastodonId),
|
||||
"3494513243013053824",
|
||||
);
|
||||
});
|
||||
|
|
|
@ -15,8 +15,8 @@ export class AbuseUserReport {
|
|||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the AbuseUserReport.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the AbuseUserReport.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
|
@ -24,8 +24,8 @@ export class AbuseUserReport {
|
|||
@Column(id())
|
||||
public targetUserId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public targetUser: User | null;
|
||||
|
@ -34,8 +34,8 @@ export class AbuseUserReport {
|
|||
@Column(id())
|
||||
public reporterId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public reporter: User | null;
|
||||
|
@ -46,40 +46,42 @@ export class AbuseUserReport {
|
|||
})
|
||||
public assigneeId: User["id"] | null;
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'SET NULL',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "SET NULL",
|
||||
})
|
||||
@JoinColumn()
|
||||
public assignee: User | null;
|
||||
|
||||
@Index()
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public resolved: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
default: false
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public forwarded: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 2048,
|
||||
})
|
||||
public comment: string;
|
||||
|
||||
//#region Denormalized fields
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public targetUserHost: string | null;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public reporterHost: string | null;
|
||||
//#endregion
|
||||
|
|
|
@ -15,31 +15,31 @@ export class AccessToken {
|
|||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the AccessToken.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the AccessToken.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
@Column("timestamp with time zone", {
|
||||
nullable: true,
|
||||
})
|
||||
public lastUsedAt: Date | null;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
})
|
||||
public token: string;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public session: string | null;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
})
|
||||
public hash: string;
|
||||
|
@ -48,8 +48,8 @@ export class AccessToken {
|
|||
@Column(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
@ -60,37 +60,38 @@ export class AccessToken {
|
|||
})
|
||||
public appId: App["id"] | null;
|
||||
|
||||
@ManyToOne(type => App, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => App, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public app: App | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public name: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public description: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public iconUrl: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 64, array: true,
|
||||
default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 64,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public permission: string[];
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public fetched: boolean;
|
||||
|
|
|
@ -7,45 +7,51 @@ export class Ad {
|
|||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the Ad.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the Ad.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The expired date of the Ad.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The expired date of the Ad.",
|
||||
})
|
||||
public expiresAt: Date;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 32, nullable: false,
|
||||
@Column("varchar", {
|
||||
length: 32,
|
||||
nullable: false,
|
||||
})
|
||||
public place: string;
|
||||
|
||||
// 今は使われていないが将来的に活用される可能性はある
|
||||
@Column('varchar', {
|
||||
length: 32, nullable: false,
|
||||
@Column("varchar", {
|
||||
length: 32,
|
||||
nullable: false,
|
||||
})
|
||||
public priority: string;
|
||||
|
||||
@Column('integer', {
|
||||
default: 1, nullable: false,
|
||||
@Column("integer", {
|
||||
default: 1,
|
||||
nullable: false,
|
||||
})
|
||||
public ratio: number;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 1024, nullable: false,
|
||||
@Column("varchar", {
|
||||
length: 1024,
|
||||
nullable: false,
|
||||
})
|
||||
public url: string;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 1024, nullable: false,
|
||||
@Column("varchar", {
|
||||
length: 1024,
|
||||
nullable: false,
|
||||
})
|
||||
public imageUrl: string;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 8192, nullable: false,
|
||||
@Column("varchar", {
|
||||
length: 8192,
|
||||
nullable: false,
|
||||
})
|
||||
public memo: string;
|
||||
|
||||
|
|
|
@ -11,13 +11,13 @@ import { Announcement } from "./announcement.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'announcementId'], { unique: true })
|
||||
@Index(["userId", "announcementId"], { unique: true })
|
||||
export class AnnouncementRead {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the AnnouncementRead.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the AnnouncementRead.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
|
@ -25,8 +25,8 @@ export class AnnouncementRead {
|
|||
@Column(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
@ -35,8 +35,8 @@ export class AnnouncementRead {
|
|||
@Column(id())
|
||||
public announcementId: Announcement["id"];
|
||||
|
||||
@ManyToOne(type => Announcement, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Announcement, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public announcement: Announcement | null;
|
||||
|
|
|
@ -7,29 +7,32 @@ export class Announcement {
|
|||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the Announcement.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the Announcement.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The updated date of the Announcement.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The updated date of the Announcement.",
|
||||
nullable: true,
|
||||
})
|
||||
public updatedAt: Date | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 8192, nullable: false,
|
||||
@Column("varchar", {
|
||||
length: 8192,
|
||||
nullable: false,
|
||||
})
|
||||
public text: string;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 256, nullable: false,
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
nullable: false,
|
||||
})
|
||||
public title: string;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 1024, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 1024,
|
||||
nullable: true,
|
||||
})
|
||||
public imageUrl: string | null;
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ import { Antenna } from "./antenna.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['noteId', 'antennaId'], { unique: true })
|
||||
@Index(["noteId", "antennaId"], { unique: true })
|
||||
export class AntennaNote {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
@ -19,12 +19,12 @@ export class AntennaNote {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The note ID.',
|
||||
comment: "The note ID.",
|
||||
})
|
||||
public noteId: Note["id"];
|
||||
|
||||
@ManyToOne(type => Note, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Note, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public note: Note | null;
|
||||
|
@ -32,18 +32,18 @@ export class AntennaNote {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The antenna ID.',
|
||||
comment: "The antenna ID.",
|
||||
})
|
||||
public antennaId: Antenna["id"];
|
||||
|
||||
@ManyToOne(type => Antenna, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Antenna, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public antenna: Antenna | null;
|
||||
|
||||
@Index()
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public read: boolean;
|
||||
|
|
|
@ -16,31 +16,33 @@ export class Antenna {
|
|||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the Antenna.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the Antenna.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The owner ID.',
|
||||
comment: "The owner ID.",
|
||||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
comment: 'The name of the Antenna.',
|
||||
comment: "The name of the Antenna.",
|
||||
})
|
||||
public name: string;
|
||||
|
||||
@Column('enum', { enum: ['home', 'all', 'users', 'list', 'group', 'instances'] })
|
||||
@Column("enum", {
|
||||
enum: ["home", "all", "users", "list", "group", "instances"],
|
||||
})
|
||||
public src: "home" | "all" | "users" | "list" | "group" | "instances";
|
||||
|
||||
@Column({
|
||||
|
@ -49,8 +51,8 @@ export class Antenna {
|
|||
})
|
||||
public userListId: UserList["id"] | null;
|
||||
|
||||
@ManyToOne(type => UserList, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => UserList, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public userList: UserList | null;
|
||||
|
@ -61,51 +63,53 @@ export class Antenna {
|
|||
})
|
||||
public userGroupJoiningId: UserGroupJoining["id"] | null;
|
||||
|
||||
@ManyToOne(type => UserGroupJoining, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => UserGroupJoining, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public userGroupJoining: UserGroupJoining | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 1024, array: true,
|
||||
default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 1024,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public users: string[];
|
||||
|
||||
@Column('jsonb', {
|
||||
@Column("jsonb", {
|
||||
default: [],
|
||||
})
|
||||
public instances: string[];
|
||||
|
||||
@Column('jsonb', {
|
||||
@Column("jsonb", {
|
||||
default: [],
|
||||
})
|
||||
public keywords: string[][];
|
||||
|
||||
@Column('jsonb', {
|
||||
@Column("jsonb", {
|
||||
default: [],
|
||||
})
|
||||
public excludeKeywords: string[][];
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public caseSensitive: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public withReplies: boolean;
|
||||
|
||||
@Column('boolean')
|
||||
@Column("boolean")
|
||||
public withFile: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 2048, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 2048,
|
||||
nullable: true,
|
||||
})
|
||||
public expression: string | null;
|
||||
|
||||
@Column('boolean')
|
||||
@Column("boolean")
|
||||
public notify: boolean;
|
||||
}
|
||||
|
|
|
@ -8,8 +8,8 @@ export class App {
|
|||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the App.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the App.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
|
@ -17,44 +17,46 @@ export class App {
|
|||
@Column({
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: 'The owner ID.',
|
||||
comment: "The owner ID.",
|
||||
})
|
||||
public userId: User["id"] | null;
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'SET NULL',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "SET NULL",
|
||||
nullable: true,
|
||||
})
|
||||
public user: User | null;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 64,
|
||||
comment: 'The secret key of the App.',
|
||||
comment: "The secret key of the App.",
|
||||
})
|
||||
public secret: string;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
comment: 'The name of the App.',
|
||||
comment: "The name of the App.",
|
||||
})
|
||||
public name: string;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
comment: 'The description of the App.',
|
||||
comment: "The description of the App.",
|
||||
})
|
||||
public description: string;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 64, array: true,
|
||||
comment: 'The permission of the App.',
|
||||
@Column("varchar", {
|
||||
length: 64,
|
||||
array: true,
|
||||
comment: "The permission of the App.",
|
||||
})
|
||||
public permission: string[];
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: 'The callbackUrl of the App.',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment: "The callbackUrl of the App.",
|
||||
})
|
||||
public callbackUrl: string | null;
|
||||
}
|
||||
|
|
|
@ -18,27 +18,27 @@ export class AttestationChallenge {
|
|||
@PrimaryColumn(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 64,
|
||||
comment: 'Hex-encoded sha256 hash of the challenge.',
|
||||
comment: "Hex-encoded sha256 hash of the challenge.",
|
||||
})
|
||||
public challenge: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The date challenge was created for expiry purposes.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The date challenge was created for expiry purposes.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
comment:
|
||||
'Indicates that the challenge is only for registration purposes if true to prevent the challenge for being used as authentication.',
|
||||
"Indicates that the challenge is only for registration purposes if true to prevent the challenge for being used as authentication.",
|
||||
default: false,
|
||||
})
|
||||
public registrationChallenge: boolean;
|
||||
|
|
|
@ -15,13 +15,13 @@ export class AuthSession {
|
|||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the AuthSession.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the AuthSession.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
})
|
||||
public token: string;
|
||||
|
@ -32,8 +32,8 @@ export class AuthSession {
|
|||
})
|
||||
public userId: User["id"] | null;
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
nullable: true,
|
||||
})
|
||||
@JoinColumn()
|
||||
|
@ -42,8 +42,8 @@ export class AuthSession {
|
|||
@Column(id())
|
||||
public appId: App["id"];
|
||||
|
||||
@ManyToOne(type => App, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => App, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public app: App | null;
|
||||
|
|
|
@ -10,26 +10,26 @@ import { User } from "./user.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['blockerId', 'blockeeId'], { unique: true })
|
||||
@Index(["blockerId", "blockeeId"], { unique: true })
|
||||
export class Blocking {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the Blocking.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the Blocking.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The blockee user ID.',
|
||||
comment: "The blockee user ID.",
|
||||
})
|
||||
public blockeeId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public blockee: User | null;
|
||||
|
@ -37,12 +37,12 @@ export class Blocking {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The blocker user ID.',
|
||||
comment: "The blocker user ID.",
|
||||
})
|
||||
public blockerId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public blocker: User | null;
|
||||
|
|
|
@ -11,26 +11,26 @@ import { id } from "../id.js";
|
|||
import { Channel } from "./channel.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['followerId', 'followeeId'], { unique: true })
|
||||
@Index(["followerId", "followeeId"], { unique: true })
|
||||
export class ChannelFollowing {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the ChannelFollowing.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the ChannelFollowing.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The followee channel ID.',
|
||||
comment: "The followee channel ID.",
|
||||
})
|
||||
public followeeId: Channel["id"];
|
||||
|
||||
@ManyToOne(type => Channel, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Channel, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public followee: Channel | null;
|
||||
|
@ -38,12 +38,12 @@ export class ChannelFollowing {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The follower user ID.',
|
||||
comment: "The follower user ID.",
|
||||
})
|
||||
public followerId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public follower: User | null;
|
||||
|
|
|
@ -11,13 +11,13 @@ import { Channel } from "./channel.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['channelId', 'noteId'], { unique: true })
|
||||
@Index(["channelId", "noteId"], { unique: true })
|
||||
export class ChannelNotePining {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the ChannelNotePining.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the ChannelNotePining.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
|
@ -25,8 +25,8 @@ export class ChannelNotePining {
|
|||
@Column(id())
|
||||
public channelId: Channel["id"];
|
||||
|
||||
@ManyToOne(type => Channel, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Channel, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public channel: Channel | null;
|
||||
|
@ -34,8 +34,8 @@ export class ChannelNotePining {
|
|||
@Column(id())
|
||||
public noteId: Note["id"];
|
||||
|
||||
@ManyToOne(type => Note, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Note, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public note: Note | null;
|
||||
|
|
|
@ -16,13 +16,13 @@ export class Channel {
|
|||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the Channel.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the Channel.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
@Column("timestamp with time zone", {
|
||||
nullable: true,
|
||||
})
|
||||
public lastNotedAt: Date | null;
|
||||
|
@ -31,52 +31,53 @@ export class Channel {
|
|||
@Column({
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: 'The owner ID.',
|
||||
comment: "The owner ID.",
|
||||
})
|
||||
public userId: User["id"] | null;
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'SET NULL',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "SET NULL",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
comment: 'The name of the Channel.',
|
||||
comment: "The name of the Channel.",
|
||||
})
|
||||
public name: string;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 2048, nullable: true,
|
||||
comment: 'The description of the Channel.',
|
||||
@Column("varchar", {
|
||||
length: 2048,
|
||||
nullable: true,
|
||||
comment: "The description of the Channel.",
|
||||
})
|
||||
public description: string | null;
|
||||
|
||||
@Column({
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: 'The ID of banner Channel.',
|
||||
comment: "The ID of banner Channel.",
|
||||
})
|
||||
public bannerId: DriveFile["id"] | null;
|
||||
|
||||
@ManyToOne(type => DriveFile, {
|
||||
onDelete: 'SET NULL',
|
||||
@ManyToOne((type) => DriveFile, {
|
||||
onDelete: "SET NULL",
|
||||
})
|
||||
@JoinColumn()
|
||||
public banner: DriveFile | null;
|
||||
|
||||
@Index()
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
comment: 'The count of notes.',
|
||||
comment: "The count of notes.",
|
||||
})
|
||||
public notesCount: number;
|
||||
|
||||
@Index()
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
comment: 'The count of users.',
|
||||
comment: "The count of users.",
|
||||
})
|
||||
public usersCount: number;
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ import { Clip } from "./clip.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['noteId', 'clipId'], { unique: true })
|
||||
@Index(["noteId", "clipId"], { unique: true })
|
||||
export class ClipNote {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
@ -19,12 +19,12 @@ export class ClipNote {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The note ID.',
|
||||
comment: "The note ID.",
|
||||
})
|
||||
public noteId: Note["id"];
|
||||
|
||||
@ManyToOne(type => Note, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Note, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public note: Note | null;
|
||||
|
@ -32,12 +32,12 @@ export class ClipNote {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The clip ID.',
|
||||
comment: "The clip ID.",
|
||||
})
|
||||
public clipId: Clip["id"];
|
||||
|
||||
@ManyToOne(type => Clip, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Clip, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public clip: Clip | null;
|
||||
|
|
|
@ -14,38 +14,39 @@ export class Clip {
|
|||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the Clip.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the Clip.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The owner ID.',
|
||||
comment: "The owner ID.",
|
||||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
comment: 'The name of the Clip.',
|
||||
comment: "The name of the Clip.",
|
||||
})
|
||||
public name: string;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public isPublic: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 2048, nullable: true,
|
||||
comment: 'The description of the Clip.',
|
||||
@Column("varchar", {
|
||||
length: 2048,
|
||||
nullable: true,
|
||||
comment: "The description of the Clip.",
|
||||
})
|
||||
public description: string | null;
|
||||
}
|
||||
|
|
|
@ -12,14 +12,14 @@ import { DriveFolder } from "./drive-folder.js";
|
|||
import { DB_MAX_IMAGE_COMMENT_LENGTH } from "@/misc/hard-limits.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'folderId', 'id'])
|
||||
@Index(["userId", "folderId", "id"])
|
||||
export class DriveFile {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the DriveFile.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the DriveFile.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
|
@ -27,64 +27,67 @@ export class DriveFile {
|
|||
@Column({
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: 'The owner ID.',
|
||||
comment: "The owner ID.",
|
||||
})
|
||||
public userId: User["id"] | null;
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'SET NULL',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "SET NULL",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: 'The host of owner. It will be null if the user in local.',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment: "The host of owner. It will be null if the user in local.",
|
||||
})
|
||||
public userHost: string | null;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 32,
|
||||
comment: 'The MD5 hash of the DriveFile.',
|
||||
comment: "The MD5 hash of the DriveFile.",
|
||||
})
|
||||
public md5: string;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
comment: 'The file name of the DriveFile.',
|
||||
comment: "The file name of the DriveFile.",
|
||||
})
|
||||
public name: string;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
comment: 'The content type (MIME) of the DriveFile.',
|
||||
comment: "The content type (MIME) of the DriveFile.",
|
||||
})
|
||||
public type: string;
|
||||
|
||||
@Column('integer', {
|
||||
comment: 'The file size (bytes) of the DriveFile.',
|
||||
@Column("integer", {
|
||||
comment: "The file size (bytes) of the DriveFile.",
|
||||
})
|
||||
public size: number;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: DB_MAX_IMAGE_COMMENT_LENGTH,
|
||||
nullable: true,
|
||||
comment: 'The comment of the DriveFile.',
|
||||
comment: "The comment of the DriveFile.",
|
||||
})
|
||||
public comment: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: 'The BlurHash string.',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment: "The BlurHash string.",
|
||||
})
|
||||
public blurhash: string | null;
|
||||
|
||||
@Column('jsonb', {
|
||||
@Column("jsonb", {
|
||||
default: {},
|
||||
comment: 'The any properties of the DriveFile. For example, it includes image width/height.',
|
||||
comment:
|
||||
"The any properties of the DriveFile. For example, it includes image width/height.",
|
||||
})
|
||||
public properties: {
|
||||
width?: number;
|
||||
|
@ -93,59 +96,68 @@ export class DriveFile {
|
|||
avgColor?: string;
|
||||
};
|
||||
|
||||
@Column('boolean')
|
||||
@Column("boolean")
|
||||
public storedInternal: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
comment: 'The URL of the DriveFile.',
|
||||
comment: "The URL of the DriveFile.",
|
||||
})
|
||||
public url: string;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: 'The URL of the thumbnail of the DriveFile.',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment: "The URL of the thumbnail of the DriveFile.",
|
||||
})
|
||||
public thumbnailUrl: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: 'The URL of the webpublic of the DriveFile.',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment: "The URL of the webpublic of the DriveFile.",
|
||||
})
|
||||
public webpublicUrl: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public webpublicType: string | null;
|
||||
|
||||
@Index({ unique: true })
|
||||
@Column('varchar', {
|
||||
length: 256, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
nullable: true,
|
||||
})
|
||||
public accessKey: string | null;
|
||||
|
||||
@Index({ unique: true })
|
||||
@Column('varchar', {
|
||||
length: 256, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
nullable: true,
|
||||
})
|
||||
public thumbnailAccessKey: string | null;
|
||||
|
||||
@Index({ unique: true })
|
||||
@Column('varchar', {
|
||||
length: 256, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
nullable: true,
|
||||
})
|
||||
public webpublicAccessKey: string | null;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: 'The URI of the DriveFile. it will be null when the DriveFile is local.',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment:
|
||||
"The URI of the DriveFile. it will be null when the DriveFile is local.",
|
||||
})
|
||||
public uri: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public src: string | null;
|
||||
|
||||
|
@ -153,32 +165,33 @@ export class DriveFile {
|
|||
@Column({
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: 'The parent folder ID. If null, it means the DriveFile is located in root.',
|
||||
comment:
|
||||
"The parent folder ID. If null, it means the DriveFile is located in root.",
|
||||
})
|
||||
public folderId: DriveFolder["id"] | null;
|
||||
|
||||
@ManyToOne(type => DriveFolder, {
|
||||
onDelete: 'SET NULL',
|
||||
@ManyToOne((type) => DriveFolder, {
|
||||
onDelete: "SET NULL",
|
||||
})
|
||||
@JoinColumn()
|
||||
public folder: DriveFolder | null;
|
||||
|
||||
@Index()
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
comment: 'Whether the DriveFile is NSFW.',
|
||||
comment: "Whether the DriveFile is NSFW.",
|
||||
})
|
||||
public isSensitive: boolean;
|
||||
|
||||
@Index()
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
comment: 'Whether the DriveFile is NSFW. (predict)',
|
||||
comment: "Whether the DriveFile is NSFW. (predict)",
|
||||
})
|
||||
public maybeSensitive: boolean;
|
||||
|
||||
@Index()
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public maybePorn: boolean;
|
||||
|
@ -187,20 +200,21 @@ export class DriveFile {
|
|||
* 外部の(信頼されていない)URLへの直リンクか否か
|
||||
*/
|
||||
@Index()
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
comment: 'Whether the DriveFile is direct link to remote server.',
|
||||
comment: "Whether the DriveFile is direct link to remote server.",
|
||||
})
|
||||
public isLink: boolean;
|
||||
|
||||
@Column('jsonb', {
|
||||
@Column("jsonb", {
|
||||
default: {},
|
||||
nullable: true,
|
||||
})
|
||||
public requestHeaders: Record<string, string> | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public requestIp: string | null;
|
||||
}
|
||||
|
|
|
@ -15,14 +15,14 @@ export class DriveFolder {
|
|||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the DriveFolder.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the DriveFolder.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
comment: 'The name of the DriveFolder.',
|
||||
comment: "The name of the DriveFolder.",
|
||||
})
|
||||
public name: string;
|
||||
|
||||
|
@ -30,12 +30,12 @@ export class DriveFolder {
|
|||
@Column({
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: 'The owner ID.',
|
||||
comment: "The owner ID.",
|
||||
})
|
||||
public userId: User["id"] | null;
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
@ -44,12 +44,13 @@ export class DriveFolder {
|
|||
@Column({
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: 'The parent folder ID. If null, it means the DriveFolder is located in root.',
|
||||
comment:
|
||||
"The parent folder ID. If null, it means the DriveFolder is located in root.",
|
||||
})
|
||||
public parentId: DriveFolder["id"] | null;
|
||||
|
||||
@ManyToOne(type => DriveFolder, {
|
||||
onDelete: 'SET NULL',
|
||||
@ManyToOne((type) => DriveFolder, {
|
||||
onDelete: "SET NULL",
|
||||
})
|
||||
@JoinColumn()
|
||||
public parent: DriveFolder | null;
|
||||
|
|
|
@ -2,73 +2,82 @@ import { PrimaryColumn, Entity, Index, Column } from "typeorm";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['name', 'host'], { unique: true })
|
||||
@Index(["name", "host"], { unique: true })
|
||||
export class Emoji {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
@Column("timestamp with time zone", {
|
||||
nullable: true,
|
||||
})
|
||||
public updatedAt: Date | null;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
})
|
||||
public name: string;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public host: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public category: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
})
|
||||
public originalUrl: string;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
default: '',
|
||||
default: "",
|
||||
})
|
||||
public publicUrl: string;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public uri: string | null;
|
||||
|
||||
// publicUrlの方のtypeが入る
|
||||
// (mime)
|
||||
@Column('varchar', {
|
||||
length: 64, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 64,
|
||||
nullable: true,
|
||||
})
|
||||
public type: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
array: true, length: 128, default: '{}',
|
||||
@Column("varchar", {
|
||||
array: true,
|
||||
length: 128,
|
||||
default: "{}",
|
||||
})
|
||||
public aliases: string[];
|
||||
|
||||
@Column('varchar', {
|
||||
length: 1024, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 1024,
|
||||
nullable: true,
|
||||
})
|
||||
public license: string | null;
|
||||
|
||||
@Column('integer', {
|
||||
nullable: true, comment: 'Image width',
|
||||
@Column("integer", {
|
||||
nullable: true,
|
||||
comment: "Image width",
|
||||
})
|
||||
public width: number | null;
|
||||
|
||||
@Column('integer', {
|
||||
nullable: true, comment: "Image height",
|
||||
@Column("integer", {
|
||||
nullable: true,
|
||||
comment: "Image height",
|
||||
})
|
||||
public height: number | null;
|
||||
}
|
||||
|
|
|
@ -10,25 +10,25 @@ import { User } from "./user.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['followerId', 'followeeId'], { unique: true })
|
||||
@Index(["followerId", "followeeId"], { unique: true })
|
||||
export class FollowRequest {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the FollowRequest.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the FollowRequest.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The followee user ID.',
|
||||
comment: "The followee user ID.",
|
||||
})
|
||||
public followeeId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public followee: User | null;
|
||||
|
@ -36,56 +36,63 @@ export class FollowRequest {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The follower user ID.',
|
||||
comment: "The follower user ID.",
|
||||
})
|
||||
public followerId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public follower: User | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: 'id of Follow Activity.',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment: "id of Follow Activity.",
|
||||
})
|
||||
public requestId: string | null;
|
||||
|
||||
//#region Denormalized fields
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public followerHost: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public followerInbox: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public followerSharedInbox: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public followeeHost: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public followeeInbox: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public followeeSharedInbox: string | null;
|
||||
//#endregion
|
||||
|
|
|
@ -10,26 +10,26 @@ import { User } from "./user.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['followerId', 'followeeId'], { unique: true })
|
||||
@Index(["followerId", "followeeId"], { unique: true })
|
||||
export class Following {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the Following.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the Following.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The followee user ID.',
|
||||
comment: "The followee user ID.",
|
||||
})
|
||||
public followeeId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public followee: User | null;
|
||||
|
@ -37,52 +37,58 @@ export class Following {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The follower user ID.',
|
||||
comment: "The follower user ID.",
|
||||
})
|
||||
public followerId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public follower: User | null;
|
||||
|
||||
//#region Denormalized fields
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public followerHost: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public followerInbox: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public followerSharedInbox: string | null;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public followeeHost: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public followeeInbox: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public followeeSharedInbox: string | null;
|
||||
//#endregion
|
||||
|
|
|
@ -11,20 +11,20 @@ import { id } from "../id.js";
|
|||
import { GalleryPost } from "./gallery-post.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'postId'], { unique: true })
|
||||
@Index(["userId", "postId"], { unique: true })
|
||||
export class GalleryLike {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone')
|
||||
@Column("timestamp with time zone")
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
@ -32,8 +32,8 @@ export class GalleryLike {
|
|||
@Column(id())
|
||||
public postId: GalleryPost["id"];
|
||||
|
||||
@ManyToOne(type => GalleryPost, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => GalleryPost, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public post: GalleryPost | null;
|
||||
|
|
|
@ -16,36 +16,37 @@ export class GalleryPost {
|
|||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the GalleryPost.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the GalleryPost.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The updated date of the GalleryPost.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The updated date of the GalleryPost.",
|
||||
})
|
||||
public updatedAt: Date;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
})
|
||||
public title: string;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 2048, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 2048,
|
||||
nullable: true,
|
||||
})
|
||||
public description: string | null;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The ID of author.',
|
||||
comment: "The ID of author.",
|
||||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
@ -53,26 +54,29 @@ export class GalleryPost {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
array: true, default: '{}',
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public fileIds: DriveFile["id"][];
|
||||
|
||||
@Index()
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
comment: 'Whether the post is sensitive.',
|
||||
comment: "Whether the post is sensitive.",
|
||||
})
|
||||
public isSensitive: boolean;
|
||||
|
||||
@Index()
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
})
|
||||
public likedCount: number;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 128, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public tags: string[];
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ export class Hashtag {
|
|||
public id: string;
|
||||
|
||||
@Index({ unique: true })
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
})
|
||||
public name: string;
|
||||
|
@ -20,7 +20,7 @@ export class Hashtag {
|
|||
public mentionedUserIds: User["id"][];
|
||||
|
||||
@Index()
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
})
|
||||
public mentionedUsersCount: number;
|
||||
|
@ -32,7 +32,7 @@ export class Hashtag {
|
|||
public mentionedLocalUserIds: User["id"][];
|
||||
|
||||
@Index()
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
})
|
||||
public mentionedLocalUsersCount: number;
|
||||
|
@ -44,7 +44,7 @@ export class Hashtag {
|
|||
public mentionedRemoteUserIds: User["id"][];
|
||||
|
||||
@Index()
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
})
|
||||
public mentionedRemoteUsersCount: number;
|
||||
|
@ -56,7 +56,7 @@ export class Hashtag {
|
|||
public attachedUserIds: User["id"][];
|
||||
|
||||
@Index()
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
})
|
||||
public attachedUsersCount: number;
|
||||
|
@ -68,7 +68,7 @@ export class Hashtag {
|
|||
public attachedLocalUserIds: User["id"][];
|
||||
|
||||
@Index()
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
})
|
||||
public attachedLocalUsersCount: number;
|
||||
|
@ -80,7 +80,7 @@ export class Hashtag {
|
|||
public attachedRemoteUserIds: User["id"][];
|
||||
|
||||
@Index()
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
})
|
||||
public attachedRemoteUsersCount: number;
|
||||
|
|
|
@ -10,8 +10,8 @@ export class Instance {
|
|||
* このインスタンスを捕捉した日時
|
||||
*/
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The caught date of the Instance.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The caught date of the Instance.",
|
||||
})
|
||||
public caughtAt: Date;
|
||||
|
||||
|
@ -19,34 +19,34 @@ export class Instance {
|
|||
* ホスト
|
||||
*/
|
||||
@Index({ unique: true })
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
comment: 'The host of the Instance.',
|
||||
comment: "The host of the Instance.",
|
||||
})
|
||||
public host: string;
|
||||
|
||||
/**
|
||||
* インスタンスのユーザー数
|
||||
*/
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
comment: 'The count of the users of the Instance.',
|
||||
comment: "The count of the users of the Instance.",
|
||||
})
|
||||
public usersCount: number;
|
||||
|
||||
/**
|
||||
* インスタンスの投稿数
|
||||
*/
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
comment: 'The count of the notes of the Instance.',
|
||||
comment: "The count of the notes of the Instance.",
|
||||
})
|
||||
public notesCount: number;
|
||||
|
||||
/**
|
||||
* このインスタンスのユーザーからフォローされている、自インスタンスのユーザーの数
|
||||
*/
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
})
|
||||
public followingCount: number;
|
||||
|
@ -54,7 +54,7 @@ export class Instance {
|
|||
/**
|
||||
* このインスタンスのユーザーをフォローしている、自インスタンスのユーザーの数
|
||||
*/
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
})
|
||||
public followersCount: number;
|
||||
|
@ -62,7 +62,7 @@ export class Instance {
|
|||
/**
|
||||
* 直近のリクエスト送信日時
|
||||
*/
|
||||
@Column('timestamp with time zone', {
|
||||
@Column("timestamp with time zone", {
|
||||
nullable: true,
|
||||
})
|
||||
public latestRequestSentAt: Date | null;
|
||||
|
@ -70,7 +70,7 @@ export class Instance {
|
|||
/**
|
||||
* 直近のリクエスト送信時のHTTPステータスコード
|
||||
*/
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
nullable: true,
|
||||
})
|
||||
public latestStatus: number | null;
|
||||
|
@ -78,7 +78,7 @@ export class Instance {
|
|||
/**
|
||||
* 直近のリクエスト受信日時
|
||||
*/
|
||||
@Column('timestamp with time zone', {
|
||||
@Column("timestamp with time zone", {
|
||||
nullable: true,
|
||||
})
|
||||
public latestRequestReceivedAt: Date | null;
|
||||
|
@ -86,13 +86,13 @@ export class Instance {
|
|||
/**
|
||||
* このインスタンスと最後にやり取りした日時
|
||||
*/
|
||||
@Column('timestamp with time zone')
|
||||
@Column("timestamp with time zone")
|
||||
public lastCommunicatedAt: Date;
|
||||
|
||||
/**
|
||||
* このインスタンスと不通かどうか
|
||||
*/
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public isNotResponding: boolean;
|
||||
|
@ -101,63 +101,72 @@ export class Instance {
|
|||
* このインスタンスへの配信を停止するか
|
||||
*/
|
||||
@Index()
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public isSuspended: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 64, nullable: true,
|
||||
comment: 'The software of the Instance.',
|
||||
@Column("varchar", {
|
||||
length: 64,
|
||||
nullable: true,
|
||||
comment: "The software of the Instance.",
|
||||
})
|
||||
public softwareName: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 64, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 64,
|
||||
nullable: true,
|
||||
})
|
||||
public softwareVersion: string | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
nullable: true,
|
||||
})
|
||||
public openRegistrations: boolean | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 256, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
nullable: true,
|
||||
})
|
||||
public name: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 4096, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 4096,
|
||||
nullable: true,
|
||||
})
|
||||
public description: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public maintainerName: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 256, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
nullable: true,
|
||||
})
|
||||
public maintainerEmail: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 256, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
nullable: true,
|
||||
})
|
||||
public iconUrl: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 256, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
nullable: true,
|
||||
})
|
||||
public faviconUrl: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 64, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 64,
|
||||
nullable: true,
|
||||
})
|
||||
public themeColor: string | null;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
@Column("timestamp with time zone", {
|
||||
nullable: true,
|
||||
})
|
||||
public infoUpdatedAt: Date | null;
|
||||
|
|
|
@ -17,68 +17,73 @@ export class MessagingMessage {
|
|||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the MessagingMessage.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the MessagingMessage.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The sender user ID.',
|
||||
comment: "The sender user ID.",
|
||||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(), nullable: true,
|
||||
comment: 'The recipient user ID.',
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: "The recipient user ID.",
|
||||
})
|
||||
public recipientId: User["id"] | null;
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public recipient: User | null;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(), nullable: true,
|
||||
comment: 'The recipient group ID.',
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: "The recipient group ID.",
|
||||
})
|
||||
public groupId: UserGroup["id"] | null;
|
||||
|
||||
@ManyToOne(type => UserGroup, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => UserGroup, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public group: UserGroup | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 4096, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 4096,
|
||||
nullable: true,
|
||||
})
|
||||
public text: string | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public isRead: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public uri: string | null;
|
||||
|
||||
@Column({
|
||||
...id(),
|
||||
array: true, default: '{}',
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public reads: User["id"][];
|
||||
|
||||
|
@ -88,8 +93,8 @@ export class MessagingMessage {
|
|||
})
|
||||
public fileId: DriveFile["id"] | null;
|
||||
|
||||
@ManyToOne(type => DriveFile, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => DriveFile, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public file: DriveFile | null;
|
||||
|
|
|
@ -6,119 +6,144 @@ import type { Clip } from "./clip.js";
|
|||
@Entity()
|
||||
export class Meta {
|
||||
@PrimaryColumn({
|
||||
type: 'varchar',
|
||||
type: "varchar",
|
||||
length: 32,
|
||||
})
|
||||
public id: string;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public name: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 1024, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 1024,
|
||||
nullable: true,
|
||||
})
|
||||
public description: string | null;
|
||||
|
||||
/**
|
||||
* メンテナの名前
|
||||
*/
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public maintainerName: string | null;
|
||||
|
||||
/**
|
||||
* メンテナの連絡先
|
||||
*/
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public maintainerEmail: string | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public disableRegistration: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public disableLocalTimeline: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: true,
|
||||
})
|
||||
public disableRecommendedTimeline: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public disableGlobalTimeline: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 256, default: '⭐',
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
default: "⭐",
|
||||
})
|
||||
public defaultReaction: string;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 64, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 64,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public langs: string[];
|
||||
|
||||
@Column('varchar', {
|
||||
length: 256, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public pinnedUsers: string[];
|
||||
|
||||
@Column('varchar', {
|
||||
length: 256, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public recommendedInstances: string[];
|
||||
|
||||
@Column('varchar', {
|
||||
length: 256, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public customMOTD: string[];
|
||||
|
||||
@Column('varchar', {
|
||||
length: 256, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public customSplashIcons: string[];
|
||||
|
||||
@Column('varchar', {
|
||||
length: 256, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public hiddenTags: string[];
|
||||
|
||||
@Column('varchar', {
|
||||
length: 256, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public blockedHosts: string[];
|
||||
|
||||
@Column('varchar', {
|
||||
length: 256, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public silencedHosts: string[];
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public secureMode: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public privateMode: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 256, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public allowedHosts: string[];
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, array: true, default: '{/featured,/channels,/explore,/pages,/about-calckey}',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
array: true,
|
||||
default: "{/featured,/channels,/explore,/pages,/about-calckey}",
|
||||
})
|
||||
public pinnedPages: string[];
|
||||
|
||||
|
@ -128,51 +153,51 @@ export class Meta {
|
|||
})
|
||||
public pinnedClipId: Clip["id"] | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public themeColor: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
default: '/assets/ai.png',
|
||||
default: "/assets/ai.png",
|
||||
})
|
||||
public mascotImageUrl: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public bannerUrl: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public backgroundImageUrl: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public logoImageUrl: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
default: 'https://xn--931a.moe/aiart/yubitun.png',
|
||||
default: "https://xn--931a.moe/aiart/yubitun.png",
|
||||
})
|
||||
public errorImageUrl: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public iconUrl: string | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: true,
|
||||
})
|
||||
public cacheRemoteFiles: boolean;
|
||||
|
@ -183,60 +208,60 @@ export class Meta {
|
|||
})
|
||||
public proxyAccountId: User["id"] | null;
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'SET NULL',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "SET NULL",
|
||||
})
|
||||
@JoinColumn()
|
||||
public proxyAccount: User | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public emailRequiredForSignup: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public enableHcaptcha: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 64,
|
||||
nullable: true,
|
||||
})
|
||||
public hcaptchaSiteKey: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 64,
|
||||
nullable: true,
|
||||
})
|
||||
public hcaptchaSecretKey: string | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public enableRecaptcha: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 64,
|
||||
nullable: true,
|
||||
})
|
||||
public recaptchaSiteKey: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 64,
|
||||
nullable: true,
|
||||
})
|
||||
public recaptchaSecretKey: string | null;
|
||||
|
||||
@Column('enum', {
|
||||
enum: ['none', 'all', 'local', 'remote'],
|
||||
default: 'none',
|
||||
@Column("enum", {
|
||||
enum: ["none", "all", "local", "remote"],
|
||||
default: "none",
|
||||
})
|
||||
public sensitiveMediaDetection: "none" | "all" | "local" | "remote";
|
||||
|
||||
@Column('enum', {
|
||||
enum: ['medium', 'low', 'high', 'veryLow', 'veryHigh'],
|
||||
default: 'medium',
|
||||
@Column("enum", {
|
||||
enum: ["medium", "low", "high", "veryLow", "veryHigh"],
|
||||
default: "medium",
|
||||
})
|
||||
public sensitiveMediaDetectionSensitivity:
|
||||
| "medium"
|
||||
|
@ -245,279 +270,279 @@ export class Meta {
|
|||
| "veryLow"
|
||||
| "veryHigh";
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public setSensitiveFlagAutomatically: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public enableSensitiveMediaDetectionForVideos: boolean;
|
||||
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 1024,
|
||||
comment: 'Drive capacity of a local user (MB)',
|
||||
comment: "Drive capacity of a local user (MB)",
|
||||
})
|
||||
public localDriveCapacityMb: number;
|
||||
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 32,
|
||||
comment: 'Drive capacity of a remote user (MB)',
|
||||
comment: "Drive capacity of a remote user (MB)",
|
||||
})
|
||||
public remoteDriveCapacityMb: number;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public summalyProxy: string | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public enableEmail: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public email: string | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public smtpSecure: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public smtpHost: string | null;
|
||||
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
nullable: true,
|
||||
})
|
||||
public smtpPort: number | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public smtpUser: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public smtpPass: string | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public enableServiceWorker: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public swPublicKey: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public swPrivateKey: string | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public enableTwitterIntegration: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public twitterConsumerKey: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public twitterConsumerSecret: string | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public enableGithubIntegration: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public githubClientId: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public githubClientSecret: string | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public enableDiscordIntegration: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public discordClientId: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public discordClientSecret: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public deeplAuthKey: string | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public deeplIsPro: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public libreTranslateApiUrl: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public libreTranslateApiKey: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public ToSUrl: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
default: 'https://codeberg.org/calckey/calckey',
|
||||
default: "https://codeberg.org/calckey/calckey",
|
||||
nullable: false,
|
||||
})
|
||||
public repositoryUrl: string;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
default: 'https://codeberg.org/calckey/calckey/issues/new',
|
||||
default: "https://codeberg.org/calckey/calckey/issues/new",
|
||||
nullable: true,
|
||||
})
|
||||
public feedbackUrl: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 8192,
|
||||
nullable: true,
|
||||
})
|
||||
public defaultLightTheme: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 8192,
|
||||
nullable: true,
|
||||
})
|
||||
public defaultDarkTheme: string | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public useObjectStorage: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public objectStorageBucket: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public objectStoragePrefix: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public objectStorageBaseUrl: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public objectStorageEndpoint: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public objectStorageRegion: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public objectStorageAccessKey: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public objectStorageSecretKey: string | null;
|
||||
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
nullable: true,
|
||||
})
|
||||
public objectStoragePort: number | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: true,
|
||||
})
|
||||
public objectStorageUseSSL: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: true,
|
||||
})
|
||||
public objectStorageUseProxy: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public objectStorageSetPublicRead: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: true,
|
||||
})
|
||||
public objectStorageS3ForcePathStyle: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public enableIpLogging: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: true,
|
||||
})
|
||||
public enableActiveEmailValidation: boolean;
|
||||
|
||||
@Column('jsonb', {
|
||||
@Column("jsonb", {
|
||||
default: {},
|
||||
})
|
||||
public experimentalFeatures: Record<string, unknown>;
|
||||
|
|
|
@ -14,8 +14,8 @@ export class ModerationLog {
|
|||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the ModerationLog.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the ModerationLog.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
|
@ -23,17 +23,17 @@ export class ModerationLog {
|
|||
@Column(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
})
|
||||
public type: string;
|
||||
|
||||
@Column('jsonb')
|
||||
@Column("jsonb")
|
||||
public info: Record<string, any>;
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ import { id } from "../id.js";
|
|||
import { mutedNoteReasons } from "../../types.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['noteId', 'userId'], { unique: true })
|
||||
@Index(["noteId", "userId"], { unique: true })
|
||||
export class MutedNote {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
@ -20,12 +20,12 @@ export class MutedNote {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The note ID.',
|
||||
comment: "The note ID.",
|
||||
})
|
||||
public noteId: Note["id"];
|
||||
|
||||
@ManyToOne(type => Note, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Note, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public note: Note | null;
|
||||
|
@ -33,12 +33,12 @@ export class MutedNote {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The user ID.',
|
||||
comment: "The user ID.",
|
||||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
@ -47,9 +47,9 @@ export class MutedNote {
|
|||
* ミュートされた理由。
|
||||
*/
|
||||
@Index()
|
||||
@Column('enum', {
|
||||
@Column("enum", {
|
||||
enum: mutedNoteReasons,
|
||||
comment: 'The reason of the MutedNote.',
|
||||
comment: "The reason of the MutedNote.",
|
||||
})
|
||||
public reason: typeof mutedNoteReasons[number];
|
||||
}
|
||||
|
|
|
@ -10,19 +10,19 @@ import { User } from "./user.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['muterId', 'muteeId'], { unique: true })
|
||||
@Index(["muterId", "muteeId"], { unique: true })
|
||||
export class Muting {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the Muting.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the Muting.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
@Column("timestamp with time zone", {
|
||||
nullable: true,
|
||||
})
|
||||
public expiresAt: Date | null;
|
||||
|
@ -30,12 +30,12 @@ export class Muting {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The mutee user ID.',
|
||||
comment: "The mutee user ID.",
|
||||
})
|
||||
public muteeId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public mutee: User | null;
|
||||
|
@ -43,12 +43,12 @@ export class Muting {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The muter user ID.',
|
||||
comment: "The muter user ID.",
|
||||
})
|
||||
public muterId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public muter: User | null;
|
||||
|
|
|
@ -18,34 +18,36 @@ export class NoteEdit {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The ID of note.',
|
||||
comment: "The ID of note.",
|
||||
})
|
||||
public noteId: Note["id"];
|
||||
|
||||
@ManyToOne(type => Note, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Note, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public note: Note | null;
|
||||
|
||||
@Column('text', {
|
||||
@Column("text", {
|
||||
nullable: true,
|
||||
})
|
||||
public text: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public cw: string | null;
|
||||
|
||||
@Column({
|
||||
...id(),
|
||||
array: true, default: '{}',
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public fileIds: DriveFile["id"][];
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The updated date of the Note.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The updated date of the Note.",
|
||||
})
|
||||
public updatedAt: Date;
|
||||
}
|
||||
|
|
|
@ -11,13 +11,13 @@ import { User } from "./user.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'noteId'], { unique: true })
|
||||
@Index(["userId", "noteId"], { unique: true })
|
||||
export class NoteFavorite {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the NoteFavorite.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the NoteFavorite.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
|
@ -25,8 +25,8 @@ export class NoteFavorite {
|
|||
@Column(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
@ -34,8 +34,8 @@ export class NoteFavorite {
|
|||
@Column(id())
|
||||
public noteId: Note["id"];
|
||||
|
||||
@ManyToOne(type => Note, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Note, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public note: Note | null;
|
||||
|
|
|
@ -11,14 +11,14 @@ import { Note } from "./note.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'noteId'], { unique: true })
|
||||
@Index(["userId", "noteId"], { unique: true })
|
||||
export class NoteReaction {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the NoteReaction.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the NoteReaction.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
|
@ -26,8 +26,8 @@ export class NoteReaction {
|
|||
@Column(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user?: User | null;
|
||||
|
@ -36,15 +36,15 @@ export class NoteReaction {
|
|||
@Column(id())
|
||||
public noteId: Note["id"];
|
||||
|
||||
@ManyToOne(type => Note, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Note, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public note?: Note | null;
|
||||
|
||||
// TODO: 対象noteのuserIdを非正規化したい(「受け取ったリアクション一覧」のようなものを(JOIN無しで)実装したいため)
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 260,
|
||||
})
|
||||
public reaction: string;
|
||||
|
|
|
@ -11,13 +11,12 @@ import { Note } from "./note.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'threadId'], { unique: true })
|
||||
@Index(["userId", "threadId"], { unique: true })
|
||||
export class NoteThreadMuting {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
})
|
||||
@Column("timestamp with time zone", {})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
|
@ -26,14 +25,14 @@ export class NoteThreadMuting {
|
|||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
})
|
||||
public threadId: string;
|
||||
|
|
|
@ -12,7 +12,7 @@ import { id } from "../id.js";
|
|||
import type { Channel } from "./channel.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'noteId'], { unique: true })
|
||||
@Index(["userId", "noteId"], { unique: true })
|
||||
export class NoteUnread {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
@ -21,8 +21,8 @@ export class NoteUnread {
|
|||
@Column(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
@ -31,8 +31,8 @@ export class NoteUnread {
|
|||
@Column(id())
|
||||
public noteId: Note["id"];
|
||||
|
||||
@ManyToOne(type => Note, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Note, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public note: Note | null;
|
||||
|
@ -41,21 +41,21 @@ export class NoteUnread {
|
|||
* メンションか否か
|
||||
*/
|
||||
@Index()
|
||||
@Column('boolean')
|
||||
@Column("boolean")
|
||||
public isMentioned: boolean;
|
||||
|
||||
/**
|
||||
* ダイレクト投稿か否か
|
||||
*/
|
||||
@Index()
|
||||
@Column('boolean')
|
||||
@Column("boolean")
|
||||
public isSpecified: boolean;
|
||||
|
||||
//#region Denormalized fields
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: '[Denormalized]',
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public noteUserId: User["id"];
|
||||
|
||||
|
@ -63,7 +63,7 @@ export class NoteUnread {
|
|||
@Column({
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public noteChannelId: Channel["id"] | null;
|
||||
//#endregion
|
||||
|
|
|
@ -11,26 +11,26 @@ import { Note } from "./note.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'noteId'], { unique: true })
|
||||
@Index(["userId", "noteId"], { unique: true })
|
||||
export class NoteWatching {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the NoteWatching.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the NoteWatching.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The watcher ID.',
|
||||
comment: "The watcher ID.",
|
||||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
@ -38,12 +38,12 @@ export class NoteWatching {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The target Note ID.',
|
||||
comment: "The target Note ID.",
|
||||
})
|
||||
public noteId: Note["id"];
|
||||
|
||||
@ManyToOne(type => Note, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Note, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public note: Note | null;
|
||||
|
@ -52,7 +52,7 @@ export class NoteWatching {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: '[Denormalized]',
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public noteUserId: Note["userId"];
|
||||
//#endregion
|
||||
|
|
|
@ -13,16 +13,16 @@ import { noteVisibilities } from "../../types.js";
|
|||
import { Channel } from "./channel.js";
|
||||
|
||||
@Entity()
|
||||
@Index('IDX_NOTE_TAGS', { synchronize: false })
|
||||
@Index('IDX_NOTE_MENTIONS', { synchronize: false })
|
||||
@Index('IDX_NOTE_VISIBLE_USER_IDS', { synchronize: false })
|
||||
@Index("IDX_NOTE_TAGS", { synchronize: false })
|
||||
@Index("IDX_NOTE_MENTIONS", { synchronize: false })
|
||||
@Index("IDX_NOTE_VISIBLE_USER_IDS", { synchronize: false })
|
||||
export class Note {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the Note.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the Note.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
|
@ -30,12 +30,12 @@ export class Note {
|
|||
@Column({
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: 'The ID of reply target.',
|
||||
comment: "The ID of reply target.",
|
||||
})
|
||||
public replyId: Note["id"] | null;
|
||||
|
||||
@ManyToOne(type => Note, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Note, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public reply: Note | null;
|
||||
|
@ -44,66 +44,69 @@ export class Note {
|
|||
@Column({
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: 'The ID of renote target.',
|
||||
comment: "The ID of renote target.",
|
||||
})
|
||||
public renoteId: Note["id"] | null;
|
||||
|
||||
@ManyToOne(type => Note, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Note, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public renote: Note | null;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 256, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
nullable: true,
|
||||
})
|
||||
public threadId: string | null;
|
||||
|
||||
@Column('text', {
|
||||
@Column("text", {
|
||||
nullable: true,
|
||||
})
|
||||
public text: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 256, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
nullable: true,
|
||||
})
|
||||
public name: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public cw: string | null;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The ID of author.',
|
||||
comment: "The ID of author.",
|
||||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public localOnly: boolean;
|
||||
|
||||
@Column('smallint', {
|
||||
@Column("smallint", {
|
||||
default: 0,
|
||||
})
|
||||
public renoteCount: number;
|
||||
|
||||
@Column('smallint', {
|
||||
@Column("smallint", {
|
||||
default: 0,
|
||||
})
|
||||
public repliesCount: number;
|
||||
|
||||
@Column('jsonb', {
|
||||
@Column("jsonb", {
|
||||
default: {},
|
||||
})
|
||||
public reactions: Record<string, number>;
|
||||
|
@ -115,71 +118,84 @@ export class Note {
|
|||
* followers ... フォロワーのみ
|
||||
* specified ... visibleUserIds で指定したユーザーのみ
|
||||
*/
|
||||
@Column('enum', { enum: noteVisibilities })
|
||||
@Column("enum", { enum: noteVisibilities })
|
||||
public visibility: typeof noteVisibilities[number];
|
||||
|
||||
@Index({ unique: true })
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: 'The URI of a note. it will be null when the note is local.',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment: "The URI of a note. it will be null when the note is local.",
|
||||
})
|
||||
public uri: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: 'The human readable url of a note. it will be null when the note is local.',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment:
|
||||
"The human readable url of a note. it will be null when the note is local.",
|
||||
})
|
||||
public url: string | null;
|
||||
|
||||
@Column('integer', {
|
||||
default: 0, select: false,
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
select: false,
|
||||
})
|
||||
public score: number;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
array: true, default: '{}',
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public fileIds: DriveFile["id"][];
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 256, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public attachedFileTypes: string[];
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
array: true, default: '{}',
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public visibleUserIds: User["id"][];
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
array: true, default: '{}',
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public mentions: User["id"][];
|
||||
|
||||
@Column('text', {
|
||||
default: '[]',
|
||||
@Column("text", {
|
||||
default: "[]",
|
||||
})
|
||||
public mentionedRemoteUsers: string;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public emojis: string[];
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 128, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public tags: string[];
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public hasPoll: boolean;
|
||||
|
@ -188,53 +204,56 @@ export class Note {
|
|||
@Column({
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: 'The ID of source channel.',
|
||||
comment: "The ID of source channel.",
|
||||
})
|
||||
public channelId: Channel["id"] | null;
|
||||
|
||||
@ManyToOne(type => Channel, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Channel, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public channel: Channel | null;
|
||||
|
||||
//#region Denormalized fields
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public userHost: string | null;
|
||||
|
||||
@Column({
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public replyUserId: User["id"] | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public replyUserHost: string | null;
|
||||
|
||||
@Column({
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public renoteUserId: User["id"] | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public renoteUserHost: string | null;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
@Column("timestamp with time zone", {
|
||||
nullable: true,
|
||||
comment: 'The updated date of the Note.',
|
||||
comment: "The updated date of the Note.",
|
||||
})
|
||||
public updatedAt: Date;
|
||||
//#endregion
|
||||
|
|
|
@ -20,8 +20,8 @@ export class Notification {
|
|||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the Notification.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the Notification.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
|
@ -31,12 +31,12 @@ export class Notification {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The ID of recipient user of the Notification.',
|
||||
comment: "The ID of recipient user of the Notification.",
|
||||
})
|
||||
public notifieeId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public notifiee: User | null;
|
||||
|
@ -48,12 +48,12 @@ export class Notification {
|
|||
@Column({
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: 'The ID of sender user of the Notification.',
|
||||
comment: "The ID of sender user of the Notification.",
|
||||
})
|
||||
public notifierId: User["id"] | null;
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public notifier: User | null;
|
||||
|
@ -74,9 +74,9 @@ export class Notification {
|
|||
* app - App notifications.
|
||||
*/
|
||||
@Index()
|
||||
@Column('enum', {
|
||||
@Column("enum", {
|
||||
enum: notificationTypes,
|
||||
comment: 'The type of the Notification.',
|
||||
comment: "The type of the Notification.",
|
||||
})
|
||||
public type: typeof notificationTypes[number];
|
||||
|
||||
|
@ -84,9 +84,9 @@ export class Notification {
|
|||
* Whether the notification was read.
|
||||
*/
|
||||
@Index()
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
comment: 'Whether the notification was read.',
|
||||
comment: "Whether the notification was read.",
|
||||
})
|
||||
public isRead: boolean;
|
||||
|
||||
|
@ -96,8 +96,8 @@ export class Notification {
|
|||
})
|
||||
public noteId: Note["id"] | null;
|
||||
|
||||
@ManyToOne(type => Note, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Note, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public note: Note | null;
|
||||
|
@ -108,8 +108,8 @@ export class Notification {
|
|||
})
|
||||
public followRequestId: FollowRequest["id"] | null;
|
||||
|
||||
@ManyToOne(type => FollowRequest, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => FollowRequest, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public followRequest: FollowRequest | null;
|
||||
|
@ -120,18 +120,19 @@ export class Notification {
|
|||
})
|
||||
public userGroupInvitationId: UserGroupInvitation["id"] | null;
|
||||
|
||||
@ManyToOne(type => UserGroupInvitation, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => UserGroupInvitation, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public userGroupInvitation: UserGroupInvitation | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public reaction: string | null;
|
||||
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
nullable: true,
|
||||
})
|
||||
public choice: number | null;
|
||||
|
@ -139,8 +140,9 @@ export class Notification {
|
|||
/**
|
||||
* App notification body
|
||||
*/
|
||||
@Column('varchar', {
|
||||
length: 2048, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 2048,
|
||||
nullable: true,
|
||||
})
|
||||
public customBody: string | null;
|
||||
|
||||
|
@ -148,8 +150,9 @@ export class Notification {
|
|||
* App notification header
|
||||
* (If omitted, it is expected to be displayed with the app name)
|
||||
*/
|
||||
@Column('varchar', {
|
||||
length: 256, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
nullable: true,
|
||||
})
|
||||
public customHeader: string | null;
|
||||
|
||||
|
@ -157,8 +160,9 @@ export class Notification {
|
|||
* App notification icon (URL)
|
||||
* (If omitted, it is expected to be displayed as an app icon)
|
||||
*/
|
||||
@Column('varchar', {
|
||||
length: 1024, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 1024,
|
||||
nullable: true,
|
||||
})
|
||||
public customIcon: string | null;
|
||||
|
||||
|
@ -172,8 +176,8 @@ export class Notification {
|
|||
})
|
||||
public appAccessTokenId: AccessToken["id"] | null;
|
||||
|
||||
@ManyToOne(type => AccessToken, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => AccessToken, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public appAccessToken: AccessToken | null;
|
||||
|
|
|
@ -11,20 +11,20 @@ import { id } from "../id.js";
|
|||
import { Page } from "./page.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'pageId'], { unique: true })
|
||||
@Index(["userId", "pageId"], { unique: true })
|
||||
export class PageLike {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone')
|
||||
@Column("timestamp with time zone")
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
@ -32,8 +32,8 @@ export class PageLike {
|
|||
@Column(id())
|
||||
public pageId: Page["id"];
|
||||
|
||||
@ManyToOne(type => Page, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Page, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public page: Page | null;
|
||||
|
|
|
@ -11,51 +11,52 @@ import { id } from "../id.js";
|
|||
import { DriveFile } from "./drive-file.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'name'], { unique: true })
|
||||
@Index(["userId", "name"], { unique: true })
|
||||
export class Page {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the Page.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the Page.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The updated date of the Page.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The updated date of the Page.",
|
||||
})
|
||||
public updatedAt: Date;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
})
|
||||
public title: string;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
})
|
||||
public name: string;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 256, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
nullable: true,
|
||||
})
|
||||
public summary: string | null;
|
||||
|
||||
@Column('boolean')
|
||||
@Column("boolean")
|
||||
public alignCenter: boolean;
|
||||
|
||||
@Column('boolean')
|
||||
@Column("boolean")
|
||||
public isPublic: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public hideTitleWhenPinned: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 32,
|
||||
})
|
||||
public font: string;
|
||||
|
@ -63,12 +64,12 @@ export class Page {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The ID of author.',
|
||||
comment: "The ID of author.",
|
||||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
@ -79,25 +80,25 @@ export class Page {
|
|||
})
|
||||
public eyeCatchingImageId: DriveFile["id"] | null;
|
||||
|
||||
@ManyToOne(type => DriveFile, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => DriveFile, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public eyeCatchingImage: DriveFile | null;
|
||||
|
||||
@Column('jsonb', {
|
||||
@Column("jsonb", {
|
||||
default: [],
|
||||
})
|
||||
public content: Record<string, any>[];
|
||||
|
||||
@Column('jsonb', {
|
||||
@Column("jsonb", {
|
||||
default: [],
|
||||
})
|
||||
public variables: Record<string, any>[];
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 16384,
|
||||
default: '',
|
||||
default: "",
|
||||
})
|
||||
public script: string;
|
||||
|
||||
|
@ -106,17 +107,18 @@ export class Page {
|
|||
* followers ... フォロワーのみ
|
||||
* specified ... visibleUserIds で指定したユーザーのみ
|
||||
*/
|
||||
@Column('enum', { enum: ['public', 'followers', 'specified'] })
|
||||
@Column("enum", { enum: ["public", "followers", "specified"] })
|
||||
public visibility: "public" | "followers" | "specified";
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
array: true, default: '{}',
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public visibleUserIds: User["id"][];
|
||||
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
})
|
||||
public likedCount: number;
|
||||
|
|
|
@ -14,11 +14,11 @@ export class PasswordResetRequest {
|
|||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone')
|
||||
@Column("timestamp with time zone")
|
||||
public createdAt: Date;
|
||||
|
||||
@Index({ unique: true })
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
})
|
||||
public token: string;
|
||||
|
@ -29,8 +29,8 @@ export class PasswordResetRequest {
|
|||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
|
|
@ -11,14 +11,14 @@ import { Note } from "./note.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'noteId', 'choice'], { unique: true })
|
||||
@Index(["userId", "noteId", "choice"], { unique: true })
|
||||
export class PollVote {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the PollVote.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the PollVote.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
|
@ -26,8 +26,8 @@ export class PollVote {
|
|||
@Column(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
@ -36,12 +36,12 @@ export class PollVote {
|
|||
@Column(id())
|
||||
public noteId: Note["id"];
|
||||
|
||||
@ManyToOne(type => Note, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Note, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public note: Note | null;
|
||||
|
||||
@Column('integer')
|
||||
@Column("integer")
|
||||
public choice: number;
|
||||
}
|
||||
|
|
|
@ -16,48 +16,51 @@ export class Poll {
|
|||
@PrimaryColumn(id())
|
||||
public noteId: Note["id"];
|
||||
|
||||
@OneToOne(type => Note, {
|
||||
onDelete: 'CASCADE',
|
||||
@OneToOne((type) => Note, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public note: Note | null;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
@Column("timestamp with time zone", {
|
||||
nullable: true,
|
||||
})
|
||||
public expiresAt: Date | null;
|
||||
|
||||
@Column('boolean')
|
||||
@Column("boolean")
|
||||
public multiple: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 256, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public choices: string[];
|
||||
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
array: true,
|
||||
})
|
||||
public votes: number[];
|
||||
|
||||
//#region Denormalized fields
|
||||
@Column('enum', {
|
||||
@Column("enum", {
|
||||
enum: noteVisibilities,
|
||||
comment: '[Denormalized]',
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public noteVisibility: typeof noteVisibilities[number];
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: '[Denormalized]',
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public userHost: string | null;
|
||||
//#endregion
|
||||
|
|
|
@ -15,20 +15,20 @@ export class PromoNote {
|
|||
@PrimaryColumn(id())
|
||||
public noteId: Note["id"];
|
||||
|
||||
@OneToOne(type => Note, {
|
||||
onDelete: 'CASCADE',
|
||||
@OneToOne((type) => Note, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public note: Note | null;
|
||||
|
||||
@Column('timestamp with time zone')
|
||||
@Column("timestamp with time zone")
|
||||
public expiresAt: Date;
|
||||
|
||||
//#region Denormalized fields
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: '[Denormalized]',
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public userId: User["id"];
|
||||
//#endregion
|
||||
|
|
|
@ -11,13 +11,13 @@ import { User } from "./user.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'noteId'], { unique: true })
|
||||
@Index(["userId", "noteId"], { unique: true })
|
||||
export class PromoRead {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the PromoRead.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the PromoRead.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
|
@ -25,8 +25,8 @@ export class PromoRead {
|
|||
@Column(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
@ -34,8 +34,8 @@ export class PromoRead {
|
|||
@Column(id())
|
||||
public noteId: Note["id"];
|
||||
|
||||
@ManyToOne(type => Note, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Note, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public note: Note | null;
|
||||
|
|
|
@ -6,11 +6,11 @@ export class RegistrationTicket {
|
|||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone')
|
||||
@Column("timestamp with time zone")
|
||||
public createdAt: Date;
|
||||
|
||||
@Index({ unique: true })
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 64,
|
||||
})
|
||||
public code: string;
|
||||
|
|
|
@ -15,51 +15,55 @@ export class RegistryItem {
|
|||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the RegistryItem.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the RegistryItem.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The updated date of the RegistryItem.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The updated date of the RegistryItem.",
|
||||
})
|
||||
public updatedAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The owner ID.',
|
||||
comment: "The owner ID.",
|
||||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 1024,
|
||||
comment: 'The key of the RegistryItem.',
|
||||
comment: "The key of the RegistryItem.",
|
||||
})
|
||||
public key: string;
|
||||
|
||||
@Column('jsonb', {
|
||||
default: {}, nullable: true,
|
||||
comment: 'The value of the RegistryItem.',
|
||||
@Column("jsonb", {
|
||||
default: {},
|
||||
nullable: true,
|
||||
comment: "The value of the RegistryItem.",
|
||||
})
|
||||
public value: any | null;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 1024, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 1024,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public scope: string[];
|
||||
|
||||
// サードパーティアプリに開放するときのためのカラム
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
})
|
||||
public domain: string | null;
|
||||
}
|
||||
|
|
|
@ -7,13 +7,14 @@ export class Relay {
|
|||
public id: string;
|
||||
|
||||
@Index({ unique: true })
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: false,
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: false,
|
||||
})
|
||||
public inbox: string;
|
||||
|
||||
@Column('enum', {
|
||||
enum: ['requesting', 'accepted', 'rejected'],
|
||||
@Column("enum", {
|
||||
enum: ["requesting", "accepted", "rejected"],
|
||||
})
|
||||
public status: "requesting" | "accepted" | "rejected";
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ export class RenoteMuting {
|
|||
})
|
||||
public muteeId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
|
@ -41,7 +41,7 @@ export class RenoteMuting {
|
|||
})
|
||||
public muterId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
|
|
|
@ -14,8 +14,8 @@ export class Signin {
|
|||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the Signin.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the Signin.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
|
@ -23,20 +23,20 @@ export class Signin {
|
|||
@Column(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
})
|
||||
public ip: string;
|
||||
|
||||
@Column('jsonb')
|
||||
@Column("jsonb")
|
||||
public headers: Record<string, any>;
|
||||
|
||||
@Column('boolean')
|
||||
@Column("boolean")
|
||||
public success: boolean;
|
||||
}
|
||||
|
|
|
@ -14,35 +14,35 @@ export class SwSubscription {
|
|||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone')
|
||||
@Column("timestamp with time zone")
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
})
|
||||
public endpoint: string;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
})
|
||||
public auth: string;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
})
|
||||
public publickey: string;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public sendReadMessage: boolean;
|
||||
|
|
|
@ -2,12 +2,12 @@ import { PrimaryColumn, Entity, Column } from "typeorm";
|
|||
|
||||
@Entity()
|
||||
export class UsedUsername {
|
||||
@PrimaryColumn('varchar', {
|
||||
@PrimaryColumn("varchar", {
|
||||
length: 128,
|
||||
})
|
||||
public username: string;
|
||||
|
||||
@Column('timestamp with time zone')
|
||||
@Column("timestamp with time zone")
|
||||
public createdAt: Date;
|
||||
|
||||
constructor(data: Partial<UsedUsername>) {
|
||||
|
|
|
@ -11,25 +11,25 @@ import { UserGroup } from "./user-group.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'userGroupId'], { unique: true })
|
||||
@Index(["userId", "userGroupId"], { unique: true })
|
||||
export class UserGroupInvitation {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the UserGroupInvitation.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the UserGroupInvitation.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The user ID.',
|
||||
comment: "The user ID.",
|
||||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
@ -37,12 +37,12 @@ export class UserGroupInvitation {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The group ID.',
|
||||
comment: "The group ID.",
|
||||
})
|
||||
public userGroupId: UserGroup["id"];
|
||||
|
||||
@ManyToOne(type => UserGroup, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => UserGroup, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public userGroup: UserGroup | null;
|
||||
|
|
|
@ -11,25 +11,25 @@ import { UserGroup } from "./user-group.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'userGroupId'], { unique: true })
|
||||
@Index(["userId", "userGroupId"], { unique: true })
|
||||
export class UserGroupJoining {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the UserGroupJoining.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the UserGroupJoining.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The user ID.',
|
||||
comment: "The user ID.",
|
||||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
@ -37,12 +37,12 @@ export class UserGroupJoining {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The group ID.',
|
||||
comment: "The group ID.",
|
||||
})
|
||||
public userGroupId: UserGroup["id"];
|
||||
|
||||
@ManyToOne(type => UserGroup, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => UserGroup, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public userGroup: UserGroup | null;
|
||||
|
|
|
@ -15,12 +15,12 @@ export class UserGroup {
|
|||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the UserGroup.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the UserGroup.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
})
|
||||
public name: string;
|
||||
|
@ -28,17 +28,17 @@ export class UserGroup {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The ID of owner.',
|
||||
comment: "The ID of owner.",
|
||||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public isPrivate: boolean;
|
||||
|
|
|
@ -12,20 +12,19 @@ import { Note } from "./note.js";
|
|||
import type { User } from "./user.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'ip'], { unique: true })
|
||||
@Index(["userId", "ip"], { unique: true })
|
||||
export class UserIp {
|
||||
@PrimaryGeneratedColumn()
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
})
|
||||
@Column("timestamp with time zone", {})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
})
|
||||
public ip: string;
|
||||
|
|
|
@ -7,18 +7,18 @@ export class UserKeypair {
|
|||
@PrimaryColumn(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@OneToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@OneToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 4096,
|
||||
})
|
||||
public publicKey: string;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 4096,
|
||||
})
|
||||
public privateKey: string;
|
||||
|
|
|
@ -11,25 +11,25 @@ import { UserList } from "./user-list.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'userListId'], { unique: true })
|
||||
@Index(["userId", "userListId"], { unique: true })
|
||||
export class UserListJoining {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the UserListJoining.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the UserListJoining.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The user ID.',
|
||||
comment: "The user ID.",
|
||||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
@ -37,12 +37,12 @@ export class UserListJoining {
|
|||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The list ID.',
|
||||
comment: "The list ID.",
|
||||
})
|
||||
public userListId: UserList["id"];
|
||||
|
||||
@ManyToOne(type => UserList, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => UserList, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public userList: UserList | null;
|
||||
|
|
|
@ -14,27 +14,27 @@ export class UserList {
|
|||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the UserList.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the UserList.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The owner ID.',
|
||||
comment: "The owner ID.",
|
||||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
comment: 'The name of the UserList.',
|
||||
comment: "The name of the UserList.",
|
||||
})
|
||||
public name: string;
|
||||
}
|
||||
|
|
|
@ -11,13 +11,13 @@ import { User } from "./user.js";
|
|||
import { id } from "../id.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'noteId'], { unique: true })
|
||||
@Index(["userId", "noteId"], { unique: true })
|
||||
export class UserNotePining {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the UserNotePinings.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the UserNotePinings.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
|
@ -25,8 +25,8 @@ export class UserNotePining {
|
|||
@Column(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
@ -34,8 +34,8 @@ export class UserNotePining {
|
|||
@Column(id())
|
||||
public noteId: Note["id"];
|
||||
|
||||
@ManyToOne(type => Note, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => Note, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public note: Note | null;
|
||||
|
|
|
@ -6,26 +6,26 @@ export class UserPending {
|
|||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone')
|
||||
@Column("timestamp with time zone")
|
||||
public createdAt: Date;
|
||||
|
||||
@Index({ unique: true })
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
})
|
||||
public code: string;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
})
|
||||
public username: string;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
})
|
||||
public email: string;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
})
|
||||
public password: string;
|
||||
|
|
|
@ -18,31 +18,34 @@ export class UserProfile {
|
|||
@PrimaryColumn(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@OneToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@OneToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: 'The location of the User.',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment: "The location of the User.",
|
||||
})
|
||||
public location: string | null;
|
||||
|
||||
@Column('char', {
|
||||
length: 10, nullable: true,
|
||||
comment: 'The birthday (YYYY-MM-DD) of the User.',
|
||||
@Column("char", {
|
||||
length: 10,
|
||||
nullable: true,
|
||||
comment: "The birthday (YYYY-MM-DD) of the User.",
|
||||
})
|
||||
public birthday: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 2048, nullable: true,
|
||||
comment: 'The description (bio) of the User.',
|
||||
@Column("varchar", {
|
||||
length: 2048,
|
||||
nullable: true,
|
||||
comment: "The description (bio) of the User.",
|
||||
})
|
||||
public description: string | null;
|
||||
|
||||
@Column('jsonb', {
|
||||
@Column("jsonb", {
|
||||
default: [],
|
||||
})
|
||||
public fields: {
|
||||
|
@ -50,136 +53,145 @@ export class UserProfile {
|
|||
value: string;
|
||||
}[];
|
||||
|
||||
@Column('varchar', {
|
||||
length: 32, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 32,
|
||||
nullable: true,
|
||||
})
|
||||
public lang: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: 'Remote URL of the user.',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment: "Remote URL of the user.",
|
||||
})
|
||||
public url: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: 'The email address of the User.',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment: "The email address of the User.",
|
||||
})
|
||||
public email: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public emailVerifyCode: string | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public emailVerified: boolean;
|
||||
|
||||
@Column('jsonb', {
|
||||
default: ['follow', 'receiveFollowRequest', 'groupInvited'],
|
||||
@Column("jsonb", {
|
||||
default: ["follow", "receiveFollowRequest", "groupInvited"],
|
||||
})
|
||||
public emailNotificationTypes: string[];
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public publicReactions: boolean;
|
||||
|
||||
@Column('enum', {
|
||||
@Column("enum", {
|
||||
enum: ffVisibility,
|
||||
default: 'public',
|
||||
default: "public",
|
||||
})
|
||||
public ffVisibility: typeof ffVisibility[number];
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public twoFactorTempSecret: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
})
|
||||
public twoFactorSecret: string | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public twoFactorEnabled: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public securityKeysAvailable: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public usePasswordLessLogin: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: 'The password hash of the User. It will be null if the origin of the user is local.',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment:
|
||||
"The password hash of the User. It will be null if the origin of the user is local.",
|
||||
})
|
||||
public password: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 8192, default: '',
|
||||
@Column("varchar", {
|
||||
length: 8192,
|
||||
default: "",
|
||||
})
|
||||
public moderationNote: string | null;
|
||||
|
||||
// TODO: そのうち消す
|
||||
@Column('jsonb', {
|
||||
@Column("jsonb", {
|
||||
default: {},
|
||||
comment: 'The client-specific data of the User.',
|
||||
comment: "The client-specific data of the User.",
|
||||
})
|
||||
public clientData: Record<string, any>;
|
||||
|
||||
// TODO: そのうち消す
|
||||
@Column('jsonb', {
|
||||
@Column("jsonb", {
|
||||
default: {},
|
||||
comment: 'The room data of the User.',
|
||||
comment: "The room data of the User.",
|
||||
})
|
||||
public room: Record<string, any>;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public autoAcceptFollowed: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
comment: 'Whether reject index by crawler.',
|
||||
comment: "Whether reject index by crawler.",
|
||||
})
|
||||
public noCrawle: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: true,
|
||||
})
|
||||
public preventAiLearning: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public alwaysMarkNsfw: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public autoSensitive: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public carefulBot: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: true,
|
||||
})
|
||||
public injectFeaturedNote: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: true,
|
||||
})
|
||||
public receiveAnnouncementEmail: boolean;
|
||||
|
@ -190,35 +202,36 @@ export class UserProfile {
|
|||
})
|
||||
public pinnedPageId: Page["id"] | null;
|
||||
|
||||
@OneToOne(type => Page, {
|
||||
onDelete: 'SET NULL',
|
||||
@OneToOne((type) => Page, {
|
||||
onDelete: "SET NULL",
|
||||
})
|
||||
@JoinColumn()
|
||||
public pinnedPage: Page | null;
|
||||
|
||||
@Column('jsonb', {
|
||||
@Column("jsonb", {
|
||||
default: {},
|
||||
})
|
||||
public integrations: Record<string, any>;
|
||||
|
||||
@Index()
|
||||
@Column('boolean', {
|
||||
default: false, select: false,
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
select: false,
|
||||
})
|
||||
public enableWordMute: boolean;
|
||||
|
||||
@Column('jsonb', {
|
||||
@Column("jsonb", {
|
||||
default: [],
|
||||
})
|
||||
public mutedWords: string[][];
|
||||
|
||||
@Column('jsonb', {
|
||||
@Column("jsonb", {
|
||||
default: [],
|
||||
comment: 'List of instances muted by the user.',
|
||||
comment: "List of instances muted by the user.",
|
||||
})
|
||||
public mutedInstances: string[];
|
||||
|
||||
@Column('enum', {
|
||||
@Column("enum", {
|
||||
enum: notificationTypes,
|
||||
array: true,
|
||||
default: [],
|
||||
|
@ -227,9 +240,10 @@ export class UserProfile {
|
|||
|
||||
//#region Denormalized fields
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: '[Denormalized]',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment: "[Denormalized]",
|
||||
})
|
||||
public userHost: string | null;
|
||||
//#endregion
|
||||
|
|
|
@ -14,19 +14,19 @@ export class UserPublickey {
|
|||
@PrimaryColumn(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@OneToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@OneToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Index({ unique: true })
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 256,
|
||||
})
|
||||
public keyId: string;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 4096,
|
||||
})
|
||||
public keyPem: string;
|
||||
|
|
|
@ -11,8 +11,8 @@ import { id } from "../id.js";
|
|||
|
||||
@Entity()
|
||||
export class UserSecurityKey {
|
||||
@PrimaryColumn('varchar', {
|
||||
comment: 'Variable-length id given to navigator.credentials.get()',
|
||||
@PrimaryColumn("varchar", {
|
||||
comment: "Variable-length id given to navigator.credentials.get()",
|
||||
})
|
||||
public id: string;
|
||||
|
||||
|
@ -20,27 +20,27 @@ export class UserSecurityKey {
|
|||
@Column(id())
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
comment:
|
||||
'Variable-length public key used to verify attestations (hex-encoded).',
|
||||
"Variable-length public key used to verify attestations (hex-encoded).",
|
||||
})
|
||||
public publicKey: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
@Column("timestamp with time zone", {
|
||||
comment:
|
||||
'The date of the last time the UserSecurityKey was successfully validated.',
|
||||
"The date of the last time the UserSecurityKey was successfully validated.",
|
||||
})
|
||||
public lastUsed: Date;
|
||||
|
||||
@Column('varchar', {
|
||||
comment: 'User-defined name for this key',
|
||||
@Column("varchar", {
|
||||
comment: "User-defined name for this key",
|
||||
length: 30,
|
||||
})
|
||||
public name: string;
|
||||
|
|
|
@ -10,99 +10,101 @@ import { id } from "../id.js";
|
|||
import { DriveFile } from "./drive-file.js";
|
||||
|
||||
@Entity()
|
||||
@Index(['usernameLower', 'host'], { unique: true })
|
||||
@Index(["usernameLower", "host"], { unique: true })
|
||||
export class User {
|
||||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the User.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the User.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
@Column("timestamp with time zone", {
|
||||
nullable: true,
|
||||
comment: 'The updated date of the User.',
|
||||
comment: "The updated date of the User.",
|
||||
})
|
||||
public updatedAt: Date | null;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
@Column("timestamp with time zone", {
|
||||
nullable: true,
|
||||
})
|
||||
public lastFetchedAt: Date | null;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
@Column("timestamp with time zone", {
|
||||
nullable: true,
|
||||
})
|
||||
public lastActiveDate: Date | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public hideOnlineStatus: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
comment: 'The username of the User.',
|
||||
comment: "The username of the User.",
|
||||
})
|
||||
public username: string;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 128, select: false,
|
||||
comment: 'The username (lowercased) of the User.',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
select: false,
|
||||
comment: "The username (lowercased) of the User.",
|
||||
})
|
||||
public usernameLower: string;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: 'The name of the User.',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment: "The name of the User.",
|
||||
})
|
||||
public name: string | null;
|
||||
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
comment: 'The count of followers.',
|
||||
comment: "The count of followers.",
|
||||
})
|
||||
public followersCount: number;
|
||||
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
comment: 'The count of following.',
|
||||
comment: "The count of following.",
|
||||
})
|
||||
public followingCount: number;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment: 'The URI of the new account of the User',
|
||||
comment: "The URI of the new account of the User",
|
||||
})
|
||||
public movedToUri: string | null;
|
||||
|
||||
@Column('simple-array', {
|
||||
@Column("simple-array", {
|
||||
nullable: true,
|
||||
comment: 'URIs the user is known as too',
|
||||
comment: "URIs the user is known as too",
|
||||
})
|
||||
public alsoKnownAs: string[] | null;
|
||||
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
default: 0,
|
||||
comment: 'The count of notes.',
|
||||
comment: "The count of notes.",
|
||||
})
|
||||
public notesCount: number;
|
||||
|
||||
@Column({
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: 'The ID of avatar DriveFile.',
|
||||
comment: "The ID of avatar DriveFile.",
|
||||
})
|
||||
public avatarId: DriveFile["id"] | null;
|
||||
|
||||
@OneToOne(type => DriveFile, {
|
||||
onDelete: 'SET NULL',
|
||||
@OneToOne((type) => DriveFile, {
|
||||
onDelete: "SET NULL",
|
||||
})
|
||||
@JoinColumn()
|
||||
public avatar: DriveFile | null;
|
||||
|
@ -110,143 +112,162 @@ export class User {
|
|||
@Column({
|
||||
...id(),
|
||||
nullable: true,
|
||||
comment: 'The ID of banner DriveFile.',
|
||||
comment: "The ID of banner DriveFile.",
|
||||
})
|
||||
public bannerId: DriveFile["id"] | null;
|
||||
|
||||
@OneToOne(type => DriveFile, {
|
||||
onDelete: 'SET NULL',
|
||||
@OneToOne((type) => DriveFile, {
|
||||
onDelete: "SET NULL",
|
||||
})
|
||||
@JoinColumn()
|
||||
public banner: DriveFile | null;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 128, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public tags: string[];
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
comment: 'Whether the User is suspended.',
|
||||
comment: "Whether the User is suspended.",
|
||||
})
|
||||
public isSuspended: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
comment: 'Whether the User is silenced.',
|
||||
comment: "Whether the User is silenced.",
|
||||
})
|
||||
public isSilenced: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
comment: 'Whether the User is locked.',
|
||||
comment: "Whether the User is locked.",
|
||||
})
|
||||
public isLocked: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
comment: 'Whether the User is a bot.',
|
||||
comment: "Whether the User is a bot.",
|
||||
})
|
||||
public isBot: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
comment: 'Whether the User is a cat.',
|
||||
comment: "Whether the User is a cat.",
|
||||
})
|
||||
public isCat: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: true,
|
||||
comment: 'Whether to speak as a cat if isCat.',
|
||||
comment: "Whether to speak as a cat if isCat.",
|
||||
})
|
||||
public speakAsCat: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
comment: 'Whether the User is the admin.',
|
||||
comment: "Whether the User is the admin.",
|
||||
})
|
||||
public isAdmin: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
comment: 'Whether the User is a moderator.',
|
||||
comment: "Whether the User is a moderator.",
|
||||
})
|
||||
public isModerator: boolean;
|
||||
|
||||
@Index()
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: true,
|
||||
comment: 'Whether the User is explorable.',
|
||||
comment: "Whether the User is explorable.",
|
||||
})
|
||||
public isExplorable: boolean;
|
||||
|
||||
// アカウントが削除されたかどうかのフラグだが、完全に削除される際は物理削除なので実質削除されるまでの「削除が進行しているかどうか」のフラグ
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
comment: 'Whether the User is deleted.',
|
||||
comment: "Whether the User is deleted.",
|
||||
})
|
||||
public isDeleted: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 128, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public emojis: string[];
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 128, nullable: true,
|
||||
comment: 'The host of the User. It will be null if the origin of the user is local.',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
nullable: true,
|
||||
comment:
|
||||
"The host of the User. It will be null if the origin of the user is local.",
|
||||
})
|
||||
public host: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: 'The inbox URL of the User. It will be null if the origin of the user is local.',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment:
|
||||
"The inbox URL of the User. It will be null if the origin of the user is local.",
|
||||
})
|
||||
public inbox: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: 'The sharedInbox URL of the User. It will be null if the origin of the user is local.',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment:
|
||||
"The sharedInbox URL of the User. It will be null if the origin of the user is local.",
|
||||
})
|
||||
public sharedInbox: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: 'The featured URL of the User. It will be null if the origin of the user is local.',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment:
|
||||
"The featured URL of the User. It will be null if the origin of the user is local.",
|
||||
})
|
||||
public featured: string | null;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: 'The URI of the User. It will be null if the origin of the user is local.',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment:
|
||||
"The URI of the User. It will be null if the origin of the user is local.",
|
||||
})
|
||||
public uri: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, nullable: true,
|
||||
comment: 'The URI of the user Follower Collection. It will be null if the origin of the user is local.',
|
||||
@Column("varchar", {
|
||||
length: 512,
|
||||
nullable: true,
|
||||
comment:
|
||||
"The URI of the user Follower Collection. It will be null if the origin of the user is local.",
|
||||
})
|
||||
public followersUri: string | null;
|
||||
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
comment: 'Whether to show users replying to other users in the timeline.',
|
||||
comment: "Whether to show users replying to other users in the timeline.",
|
||||
})
|
||||
public showTimelineReplies: boolean;
|
||||
|
||||
@Index({ unique: true })
|
||||
@Column('char', {
|
||||
length: 16, nullable: true, unique: true,
|
||||
comment: 'The native access token of the User. It will be null if the origin of the user is local.',
|
||||
@Column("char", {
|
||||
length: 16,
|
||||
nullable: true,
|
||||
unique: true,
|
||||
comment:
|
||||
"The native access token of the User. It will be null if the origin of the user is local.",
|
||||
})
|
||||
public token: string | null;
|
||||
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
nullable: true,
|
||||
comment: 'Overrides user drive capacity limit',
|
||||
comment: "Overrides user drive capacity limit",
|
||||
})
|
||||
public driveCapacityOverrideMb: number | null;
|
||||
|
||||
|
|
|
@ -25,48 +25,50 @@ export class Webhook {
|
|||
@PrimaryColumn(id())
|
||||
public id: string;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
comment: 'The created date of the Antenna.',
|
||||
@Column("timestamp with time zone", {
|
||||
comment: "The created date of the Antenna.",
|
||||
})
|
||||
public createdAt: Date;
|
||||
|
||||
@Index()
|
||||
@Column({
|
||||
...id(),
|
||||
comment: 'The owner ID.',
|
||||
comment: "The owner ID.",
|
||||
})
|
||||
public userId: User["id"];
|
||||
|
||||
@ManyToOne(type => User, {
|
||||
onDelete: 'CASCADE',
|
||||
@ManyToOne((type) => User, {
|
||||
onDelete: "CASCADE",
|
||||
})
|
||||
@JoinColumn()
|
||||
public user: User | null;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
comment: 'The name of the Antenna.',
|
||||
comment: "The name of the Antenna.",
|
||||
})
|
||||
public name: string;
|
||||
|
||||
@Index()
|
||||
@Column('varchar', {
|
||||
length: 128, array: true, default: '{}',
|
||||
@Column("varchar", {
|
||||
length: 128,
|
||||
array: true,
|
||||
default: "{}",
|
||||
})
|
||||
public on: typeof webhookEventTypes[number][];
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 1024,
|
||||
})
|
||||
public url: string;
|
||||
|
||||
@Column('varchar', {
|
||||
@Column("varchar", {
|
||||
length: 1024,
|
||||
})
|
||||
public secret: string;
|
||||
|
||||
@Index()
|
||||
@Column('boolean', {
|
||||
@Column("boolean", {
|
||||
default: true,
|
||||
})
|
||||
public active: boolean;
|
||||
|
@ -74,7 +76,7 @@ export class Webhook {
|
|||
/**
|
||||
* 直近のリクエスト送信日時
|
||||
*/
|
||||
@Column('timestamp with time zone', {
|
||||
@Column("timestamp with time zone", {
|
||||
nullable: true,
|
||||
})
|
||||
public latestSentAt: Date | null;
|
||||
|
@ -82,7 +84,7 @@ export class Webhook {
|
|||
/**
|
||||
* 直近のリクエスト送信時のHTTPステータスコード
|
||||
*/
|
||||
@Column('integer', {
|
||||
@Column("integer", {
|
||||
nullable: true,
|
||||
})
|
||||
public latestStatus: number | null;
|
||||
|
|
|
@ -68,7 +68,5 @@
|
|||
"url": "/my/messaging"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"social"
|
||||
]
|
||||
"categories": ["social"]
|
||||
}
|
||||
|
|
|
@ -34,9 +34,7 @@
|
|||
"tsd": "^0.19.1",
|
||||
"typescript": "4.5.4"
|
||||
},
|
||||
"files": [
|
||||
"built"
|
||||
],
|
||||
"files": ["built"],
|
||||
"dependencies": {
|
||||
"autobind-decorator": "^2.4.0",
|
||||
"eventemitter3": "^4.0.7",
|
||||
|
|
|
@ -15,11 +15,6 @@
|
|||
"noImplicitReturns": true,
|
||||
"esModuleInterop": true
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
],
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"test/**/*"
|
||||
]
|
||||
"include": ["src/**/*"],
|
||||
"exclude": ["node_modules", "test/**/*"]
|
||||
}
|
||||
|
|
|
@ -6,9 +6,7 @@
|
|||
"watch": "pnpm swc src -d built -D -w",
|
||||
"lint": "pnpm rome check \"src/**/*.ts\""
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
},
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"@swc/cli": "^0.1.62",
|
||||
"@swc/core": "^1.3.50",
|
||||
|
|
13
rome.json
13
rome.json
|
@ -5,5 +5,18 @@
|
|||
"rules": {
|
||||
"recommended": true
|
||||
}
|
||||
},
|
||||
"formatter": {
|
||||
"ignore": [
|
||||
"packages/calckey-js/api-extractor.json",
|
||||
"packages/*/tsconfig.json",
|
||||
"packages/*/package-lock.json",
|
||||
"packages/backend/src/server/web/manifest.ts",
|
||||
"packages/backend/built/",
|
||||
"packages/backend/nsfw-model/",
|
||||
"packages/client/src/emojilist.json",
|
||||
"*.md",
|
||||
"*/.yml"
|
||||
]
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue