141 lines
7.0 KiB
TypeScript
141 lines
7.0 KiB
TypeScript
import { pgTable, varchar, date, boolean, timestamp, uuid, foreignKey, text, index, time, primaryKey, pgSequence } from "drizzle-orm/pg-core"
|
|
import { sql } from "drizzle-orm"
|
|
|
|
|
|
export const versionIdSeq = pgSequence("version_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "9223372036854775807", cache: "1", cycle: false })
|
|
export const accessTokenIdSeq = pgSequence("access_token_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "9223372036854775807", cache: "1", cycle: false })
|
|
export const oauth2ApplicationIdSeq = pgSequence("oauth2_application_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "9223372036854775807", cache: "1", cycle: false })
|
|
export const oauth2AuthorizationCodeIdSeq = pgSequence("oauth2_authorization_code_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "9223372036854775807", cache: "1", cycle: false })
|
|
export const oauth2GrantIdSeq = pgSequence("oauth2_grant_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "9223372036854775807", cache: "1", cycle: false })
|
|
export const loginSourceIdSeq = pgSequence("login_source_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "9223372036854775807", cache: "1", cycle: false })
|
|
export const twoFactorIdSeq = pgSequence("two_factor_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "9223372036854775807", cache: "1", cycle: false })
|
|
export const webauthnCredentialIdSeq = pgSequence("webauthn_credential_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "9223372036854775807", cache: "1", cycle: false })
|
|
export const dbfsMetaIdSeq = pgSequence("dbfs_meta_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "9223372036854775807", cache: "1", cycle: false })
|
|
export const dbfsDataIdSeq = pgSequence("dbfs_data_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "9223372036854775807", cache: "1", cycle: false })
|
|
export const noticeIdSeq = pgSequence("notice_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "9223372036854775807", cache: "1", cycle: false })
|
|
export const systemSettingIdSeq = pgSequence("system_setting_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "9223372036854775807", cache: "1", cycle: false })
|
|
export const badgeIdSeq = pgSequence("badge_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "9223372036854775807", cache: "1", cycle: false })
|
|
export const userBadgeIdSeq = pgSequence("user_badge_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "9223372036854775807", cache: "1", cycle: false })
|
|
export const userBlockingIdSeq = pgSequence("user_blocking_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "9223372036854775807", cache: "1", cycle: false })
|
|
export const emailAddressIdSeq = pgSequence("email_address_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "9223372036854775807", cache: "1", cycle: false })
|
|
|
|
export const account = pgTable("account", {
|
|
name: varchar().notNull(),
|
|
email: varchar().notNull(),
|
|
password: varchar().notNull(),
|
|
birthday: date(),
|
|
accountId: varchar("account_id").notNull(),
|
|
nickname: varchar().notNull(),
|
|
status: varchar().default('active').notNull(),
|
|
isDeleted: boolean("is_deleted").default(false).notNull(),
|
|
createdAt: timestamp("created_at", { mode: 'string' }).defaultNow().notNull(),
|
|
id: uuid().default(sql`uuid_generate_v4()`).primaryKey().notNull(),
|
|
});
|
|
|
|
export const comment = pgTable("comment", {
|
|
id: uuid().default(sql`uuid_generate_v4()`).primaryKey().notNull(),
|
|
content: text(),
|
|
createdAt: timestamp("created_at", { mode: 'string' }),
|
|
isDeleted: boolean("is_deleted").default(false),
|
|
writerId: uuid("writer_id"),
|
|
parentId: uuid("parent_id"),
|
|
}, (table) => [
|
|
foreignKey({
|
|
columns: [table.writerId],
|
|
foreignColumns: [account.id],
|
|
name: "writer_id"
|
|
}),
|
|
foreignKey({
|
|
columns: [table.parentId],
|
|
foreignColumns: [table.id],
|
|
name: "parent_id"
|
|
}),
|
|
]);
|
|
|
|
export const participant = pgTable("participant", {
|
|
participantId: uuid("participant_id").notNull(),
|
|
scheduleId: uuid("schedule_id").notNull(),
|
|
isDeleted: boolean("is_deleted").default(false),
|
|
}, (table) => [
|
|
index("participant_participant_id_idx").using("btree", table.participantId.asc().nullsLast().op("uuid_ops")),
|
|
index("participant_schedule_id_idx").using("btree", table.scheduleId.asc().nullsLast().op("uuid_ops")),
|
|
foreignKey({
|
|
columns: [table.scheduleId],
|
|
foreignColumns: [schedule.id],
|
|
name: "schedule_id"
|
|
}),
|
|
foreignKey({
|
|
columns: [table.participantId],
|
|
foreignColumns: [account.id],
|
|
name: "participant_id"
|
|
}),
|
|
]);
|
|
|
|
export const schedule = pgTable("schedule", {
|
|
id: uuid().default(sql`uuid_generate_v4()`).primaryKey().notNull(),
|
|
name: varchar().notNull(),
|
|
startDate: date("start_date").notNull(),
|
|
endDate: date("end_date").notNull(),
|
|
status: varchar().default('yet').notNull(),
|
|
content: text(),
|
|
isDeleted: boolean("is_deleted").default(false).notNull(),
|
|
type: varchar().notNull(),
|
|
createdAt: timestamp("created_at", { mode: 'string' }).defaultNow().notNull(),
|
|
owner: uuid().notNull(),
|
|
style: varchar().notNull(),
|
|
startTime: time("start_time").notNull(),
|
|
endTime: time("end_time").notNull(),
|
|
dayList: varchar("day_list"),
|
|
}, (table) => [
|
|
index("schedule_enddatetime_idx").using("btree", table.endDate.asc().nullsLast().op("date_ops")),
|
|
index("schedule_name_idx").using("btree", table.name.asc().nullsLast().op("text_ops"), table.content.asc().nullsLast().op("text_ops")),
|
|
index("schedule_startdatetime_idx").using("btree", table.startDate.asc().nullsLast().op("date_ops")),
|
|
index("schedule_status_idx").using("btree", table.status.asc().nullsLast().op("text_ops")),
|
|
index("schedule_type_idx").using("btree", table.type.asc().nullsLast().op("text_ops")),
|
|
foreignKey({
|
|
columns: [table.owner],
|
|
foreignColumns: [account.id],
|
|
name: "schedule_user_fk"
|
|
}),
|
|
]);
|
|
|
|
export const favorite = pgTable("favorite", {
|
|
isDeleted: boolean("is_deleted").default(false),
|
|
createdAt: date("created_at"),
|
|
userId: uuid("user_id").notNull(),
|
|
scheduleId: uuid("schedule_id").notNull(),
|
|
}, (table) => [
|
|
foreignKey({
|
|
columns: [table.scheduleId],
|
|
foreignColumns: [schedule.id],
|
|
name: "schedule_id"
|
|
}),
|
|
foreignKey({
|
|
columns: [table.userId],
|
|
foreignColumns: [account.id],
|
|
name: "user_id"
|
|
}),
|
|
primaryKey({ columns: [table.userId, table.scheduleId], name: "favorite_pk"}),
|
|
]);
|
|
|
|
export const follow = pgTable("follow", {
|
|
isDeleted: boolean("is_deleted").default(false),
|
|
isAccepted: boolean("is_accepted").default(false),
|
|
isLinked: boolean("is_linked").default(false),
|
|
createdAt: timestamp("created_at", { mode: 'string' }).defaultNow().notNull(),
|
|
following: uuid().notNull(),
|
|
follower: uuid().notNull(),
|
|
}, (table) => [
|
|
foreignKey({
|
|
columns: [table.follower],
|
|
foreignColumns: [account.id],
|
|
name: "follower_id"
|
|
}),
|
|
foreignKey({
|
|
columns: [table.following],
|
|
foreignColumns: [account.id],
|
|
name: "following_id"
|
|
}),
|
|
primaryKey({ columns: [table.following, table.follower], name: "follow_pk"}),
|
|
]);
|