A decentralized music tracking and discovery platform built on AT Protocol 馃幍
at main 31 lines 1.0 kB view raw
1import { type InferInsertModel, type InferSelectModel, sql } from "drizzle-orm"; 2import { integer, sqliteTable, text, unique } from "drizzle-orm/sqlite-core"; 3import albums from "./albums"; 4import users from "./users"; 5 6const userAlbums = sqliteTable( 7 "user_albums", 8 { 9 id: text("id").primaryKey().notNull(), 10 userId: text("user_id") 11 .notNull() 12 .references(() => users.id), 13 albumId: text("album_id") 14 .notNull() 15 .references(() => albums.id), 16 createdAt: integer("created_at", { mode: "timestamp" }) 17 .notNull() 18 .default(sql`(unixepoch())`), 19 updatedAt: integer("updated_at", { mode: "timestamp" }) 20 .notNull() 21 .default(sql`(unixepoch())`), 22 scrobbles: integer("scrobbles"), 23 uri: text("uri").unique().notNull(), 24 }, 25 (t) => [unique("user_albums_unique_index").on(t.userId, t.albumId)], 26); 27 28export type SelectUserAlbum = InferSelectModel<typeof userAlbums>; 29export type InsertUserAlbum = InferInsertModel<typeof userAlbums>; 30 31export default userAlbums;