all repos — stealth-developers @ 117160d91a01e5457170e0b37df6d38c1a073119

src/database/schema/attachments.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
import { sql } from "drizzle-orm";
import { index, integer, sqliteTable, text } from "drizzle-orm/sqlite-core";

export const attachments = sqliteTable(
	"attachments",
	{
		id: text("id").primaryKey(),

		ownerType: text("owner_type", {
			enum: ["ticket", "ticket_message", "bug"],
		}).notNull(),
		ownerId: integer("owner_id").notNull(),

		authorId: text("author_id"),
		fileName: text("file_name").notNull(),
		contentType: text("content_type").notNull(),
		size: integer("size").notNull(),

		bucket: text("bucket").notNull(),
		key: text("key").notNull(),
		url: text("url").notNull(),

		uploadedAt: integer("uploaded_at", { mode: "timestamp" })
			.default(sql`(unixepoch())`)
			.notNull(),
	},
	(t) => [
		index("attachments_owner_idx").on(t.ownerType, t.ownerId),
		index("attachments_author_idx").on(t.authorId),
	],
);

export type Attachment = typeof attachments.$inferSelect;