all repos — stealth-developers @ 2946427512ce9ca2c95f135bdc6dfc055bcdb0bc

src/database/schema/bugs.ts (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
import { defineRelations, sql } from "drizzle-orm";
import { index, integer, sqliteTable, text } from "drizzle-orm/sqlite-core";

export const bugs = sqliteTable(
	"bugs",
	{
		id: integer("id").primaryKey({ autoIncrement: true }),
		guildId: text("guild_id").notNull(),
		bugNumber: integer("bug_number").notNull(),

		authorId: text("author_id").notNull(),
		status: text("status", { enum: ["open", "closed"] })
			.default("open")
			.notNull(),

		title: text("title").notNull(),
		description: text("description").notNull(),

		projects: text("projects", { mode: "json" })
			.$type<string[]>()
			.default([])
			.notNull(),

		sent: integer("sent", { mode: "boolean" }).default(false).notNull(),
		messageId: text("message_id"),
		threadId: text("thread_id"),

		createdAt: integer("created_at", { mode: "timestamp" })
			.default(sql`(unixepoch())`)
			.notNull(),
		updatedAt: integer("updated_at", { mode: "timestamp" })
			.default(sql`(unixepoch())`)
			.notNull(),
		closedAt: integer("closed_at", { mode: "timestamp" }),
	},
	(t) => [
		index("bugs_guild_idx").on(t.guildId),
		index("bugs_author_idx").on(t.authorId),
		index("bugs_status_idx").on(t.status),
		index("bugs_guild_number_idx").on(t.guildId, t.bugNumber),
	],
);

export type Bug = typeof bugs.$inferSelect;