fork
Configure Feed
Select the types of activity you want to include in your feed.
A decentralized music tracking and discovery platform built on AT Protocol 馃幍
rocksky.app
spotify
atproto
lastfm
musicbrainz
scrobbling
listenbrainz
fork
Configure Feed
Select the types of activity you want to include in your feed.
1import { type InferInsertModel, type InferSelectModel, sql } from "drizzle-orm";
2import { integer, sqliteTable, text } from "drizzle-orm/sqlite-core";
3import albums from "./albums";
4import artists from "./artists";
5import tracks from "./tracks";
6import users from "./users";
7
8const scrobbles = sqliteTable("scrobbles", {
9 id: text("xata_id").primaryKey().notNull(),
10 userId: text("user_id").references(() => users.id),
11 trackId: text("track_id").references(() => tracks.id),
12 albumId: text("album_id").references(() => albums.id),
13 artistId: text("artist_id").references(() => artists.id),
14 uri: text("uri").unique(),
15 cid: text("cid").unique(),
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 timestamp: integer("timestamp", { mode: "timestamp" })
23 .notNull()
24 .default(sql`(unixepoch())`),
25});
26
27export type SelectScrobble = InferSelectModel<typeof scrobbles>;
28export type InsertScrobble = InferInsertModel<typeof scrobbles>;
29
30export default scrobbles;