A decentralized music tracking and discovery platform built on AT Protocol 馃幍
rocksky.app
spotify
atproto
lastfm
musicbrainz
scrobbling
listenbrainz
1import { type InferInsertModel, type InferSelectModel, sql } from "drizzle-orm";
2import { integer, pgTable, text, timestamp } from "drizzle-orm/pg-core";
3
4const artists = pgTable("artists", {
5 id: text("xata_id").primaryKey().default(sql`xata_id()`),
6 name: text("name").notNull(),
7 biography: text("biography"),
8 born: timestamp("born"),
9 bornIn: text("born_in"),
10 died: timestamp("died"),
11 picture: text("picture"),
12 sha256: text("sha256").unique().notNull(),
13 uri: text("uri").unique(),
14 appleMusicLink: text("apple_music_link"),
15 spotifyLink: text("spotify_link"),
16 tidalLink: text("tidal_link"),
17 youtubeLink: text("youtube_link"),
18 genres: text("genres").array(),
19 createdAt: timestamp("xata_createdat").defaultNow().notNull(),
20 updatedAt: timestamp("xata_updatedat").defaultNow().notNull(),
21 xataVersion: integer("xata_version"),
22});
23
24export type SelectArtist = InferSelectModel<typeof artists>;
25export type InsertArtist = InferInsertModel<typeof artists>;
26
27export default artists;