{ "id": "1aa02418-10af-488a-91bf-e3a79f263e9c", "prevId": "8d51c3c4-bcdc-418d-8dff-14f6053ee595", "version": "7", "dialect": "postgresql", "tables": { "public.avatars": { "name": "avatars", "schema": "", "columns": { "user_id": { "name": "user_id", "type": "uuid", "primaryKey": true, "notNull": true }, "image": { "name": "image", "type": "bytea", "primaryKey": false, "notNull": true }, "content_type": { "name": "content_type", "type": "text", "primaryKey": false, "notNull": true }, "updated_at": { "name": "updated_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "avatars_user_id_users_id_fk": { "name": "avatars_user_id_users_id_fk", "tableFrom": "avatars", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.blocks": { "name": "blocks", "schema": "", "columns": { "blocker_id": { "name": "blocker_id", "type": "uuid", "primaryKey": false, "notNull": true }, "blocked_id": { "name": "blocked_id", "type": "uuid", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "blocks_blocked_idx": { "name": "blocks_blocked_idx", "columns": [ { "expression": "blocked_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "blocks_blocker_id_users_id_fk": { "name": "blocks_blocker_id_users_id_fk", "tableFrom": "blocks", "tableTo": "users", "columnsFrom": [ "blocker_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "blocks_blocked_id_users_id_fk": { "name": "blocks_blocked_id_users_id_fk", "tableFrom": "blocks", "tableTo": "users", "columnsFrom": [ "blocked_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "blocks_blocker_id_blocked_id_pk": { "name": "blocks_blocker_id_blocked_id_pk", "columns": [ "blocker_id", "blocked_id" ] } }, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.connections": { "name": "connections", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "user_id": { "name": "user_id", "type": "uuid", "primaryKey": false, "notNull": true }, "provider": { "name": "provider", "type": "text", "primaryKey": false, "notNull": true }, "external_user_id": { "name": "external_user_id", "type": "text", "primaryKey": false, "notNull": true }, "display_name": { "name": "display_name", "type": "text", "primaryKey": false, "notNull": false }, "access_token_enc": { "name": "access_token_enc", "type": "text", "primaryKey": false, "notNull": false }, "refresh_token_enc": { "name": "refresh_token_enc", "type": "text", "primaryKey": false, "notNull": false }, "token_expires_at": { "name": "token_expires_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "status": { "name": "status", "type": "text", "primaryKey": false, "notNull": true, "default": "'active'" }, "last_error": { "name": "last_error", "type": "text", "primaryKey": false, "notNull": false }, "last_polled_at": { "name": "last_polled_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "last_activity_at": { "name": "last_activity_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "meta": { "name": "meta", "type": "jsonb", "primaryKey": false, "notNull": true, "default": "'{}'::jsonb" }, "webhook_secret": { "name": "webhook_secret", "type": "text", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "connections_user_provider_idx": { "name": "connections_user_provider_idx", "columns": [ { "expression": "user_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "provider", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "connections_user_id_users_id_fk": { "name": "connections_user_id_users_id_fk", "tableFrom": "connections", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "connections_webhook_secret_unique": { "name": "connections_webhook_secret_unique", "nullsNotDistinct": false, "columns": [ "webhook_secret" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.devices": { "name": "devices", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "user_id": { "name": "user_id", "type": "uuid", "primaryKey": false, "notNull": true }, "token_hash": { "name": "token_hash", "type": "text", "primaryKey": false, "notNull": true }, "platform": { "name": "platform", "type": "text", "primaryKey": false, "notNull": true }, "name": { "name": "name", "type": "varchar(100)", "primaryKey": false, "notNull": true }, "last_seen_at": { "name": "last_seen_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "devices_user_idx": { "name": "devices_user_idx", "columns": [ { "expression": "user_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "devices_user_id_users_id_fk": { "name": "devices_user_id_users_id_fk", "tableFrom": "devices", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "devices_token_hash_unique": { "name": "devices_token_hash_unique", "nullsNotDistinct": false, "columns": [ "token_hash" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.email_verifications": { "name": "email_verifications", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "uuid", "primaryKey": false, "notNull": true }, "email": { "name": "email", "type": "varchar(320)", "primaryKey": false, "notNull": true }, "expires_at": { "name": "expires_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "email_verifications_user_idx": { "name": "email_verifications_user_idx", "columns": [ { "expression": "user_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "email_verifications_user_id_users_id_fk": { "name": "email_verifications_user_id_users_id_fk", "tableFrom": "email_verifications", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.featured_songs": { "name": "featured_songs", "schema": "", "columns": { "user_id": { "name": "user_id", "type": "uuid", "primaryKey": true, "notNull": true }, "track_id": { "name": "track_id", "type": "uuid", "primaryKey": false, "notNull": true }, "comment": { "name": "comment", "type": "varchar(280)", "primaryKey": false, "notNull": false }, "updated_at": { "name": "updated_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "featured_songs_user_id_users_id_fk": { "name": "featured_songs_user_id_users_id_fk", "tableFrom": "featured_songs", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "featured_songs_track_id_tracks_id_fk": { "name": "featured_songs_track_id_tracks_id_fk", "tableFrom": "featured_songs", "tableTo": "tracks", "columnsFrom": [ "track_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.follows": { "name": "follows", "schema": "", "columns": { "follower_id": { "name": "follower_id", "type": "uuid", "primaryKey": false, "notNull": true }, "followee_id": { "name": "followee_id", "type": "uuid", "primaryKey": false, "notNull": true }, "pinned_at": { "name": "pinned_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "follows_followee_idx": { "name": "follows_followee_idx", "columns": [ { "expression": "followee_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "follows_follower_id_users_id_fk": { "name": "follows_follower_id_users_id_fk", "tableFrom": "follows", "tableTo": "users", "columnsFrom": [ "follower_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "follows_followee_id_users_id_fk": { "name": "follows_followee_id_users_id_fk", "tableFrom": "follows", "tableTo": "users", "columnsFrom": [ "followee_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "follows_follower_id_followee_id_pk": { "name": "follows_follower_id_followee_id_pk", "columns": [ "follower_id", "followee_id" ] } }, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.listens": { "name": "listens", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "user_id": { "name": "user_id", "type": "uuid", "primaryKey": false, "notNull": true }, "track_id": { "name": "track_id", "type": "uuid", "primaryKey": false, "notNull": true }, "source": { "name": "source", "type": "text", "primaryKey": false, "notNull": true }, "started_at": { "name": "started_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "listens_user_started_idx": { "name": "listens_user_started_idx", "columns": [ { "expression": "user_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "started_at", "isExpression": false, "asc": false, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "listens_user_id_users_id_fk": { "name": "listens_user_id_users_id_fk", "tableFrom": "listens", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "listens_track_id_tracks_id_fk": { "name": "listens_track_id_tracks_id_fk", "tableFrom": "listens", "tableTo": "tracks", "columnsFrom": [ "track_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.now_playing": { "name": "now_playing", "schema": "", "columns": { "user_id": { "name": "user_id", "type": "uuid", "primaryKey": true, "notNull": true }, "track_id": { "name": "track_id", "type": "uuid", "primaryKey": false, "notNull": true }, "source": { "name": "source", "type": "text", "primaryKey": false, "notNull": true }, "source_app": { "name": "source_app", "type": "text", "primaryKey": false, "notNull": false }, "source_url": { "name": "source_url", "type": "text", "primaryKey": false, "notNull": false }, "is_playing": { "name": "is_playing", "type": "boolean", "primaryKey": false, "notNull": true }, "progress_ms": { "name": "progress_ms", "type": "integer", "primaryKey": false, "notNull": false }, "started_at": { "name": "started_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "now_playing_track_idx": { "name": "now_playing_track_idx", "columns": [ { "expression": "track_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "now_playing_user_id_users_id_fk": { "name": "now_playing_user_id_users_id_fk", "tableFrom": "now_playing", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "now_playing_track_id_tracks_id_fk": { "name": "now_playing_track_id_tracks_id_fk", "tableFrom": "now_playing", "tableTo": "tracks", "columnsFrom": [ "track_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.password_resets": { "name": "password_resets", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "uuid", "primaryKey": false, "notNull": true }, "expires_at": { "name": "expires_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true }, "used_at": { "name": "used_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "password_resets_user_idx": { "name": "password_resets_user_idx", "columns": [ { "expression": "user_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "password_resets_user_id_users_id_fk": { "name": "password_resets_user_id_users_id_fk", "tableFrom": "password_resets", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.reports": { "name": "reports", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "reporter_id": { "name": "reporter_id", "type": "uuid", "primaryKey": false, "notNull": false }, "reported_id": { "name": "reported_id", "type": "uuid", "primaryKey": false, "notNull": true }, "reason": { "name": "reason", "type": "text", "primaryKey": false, "notNull": true }, "note": { "name": "note", "type": "varchar(500)", "primaryKey": false, "notNull": false }, "status": { "name": "status", "type": "text", "primaryKey": false, "notNull": true, "default": "'open'" }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "reports_status_idx": { "name": "reports_status_idx", "columns": [ { "expression": "status", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "reports_reporter_id_users_id_fk": { "name": "reports_reporter_id_users_id_fk", "tableFrom": "reports", "tableTo": "users", "columnsFrom": [ "reporter_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" }, "reports_reported_id_users_id_fk": { "name": "reports_reported_id_users_id_fk", "tableFrom": "reports", "tableTo": "users", "columnsFrom": [ "reported_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.sessions": { "name": "sessions", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "uuid", "primaryKey": false, "notNull": true }, "expires_at": { "name": "expires_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "sessions_user_idx": { "name": "sessions_user_idx", "columns": [ { "expression": "user_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "sessions_user_id_users_id_fk": { "name": "sessions_user_id_users_id_fk", "tableFrom": "sessions", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.track_links": { "name": "track_links", "schema": "", "columns": { "track_id": { "name": "track_id", "type": "uuid", "primaryKey": false, "notNull": true }, "service": { "name": "service", "type": "text", "primaryKey": false, "notNull": true }, "external_id": { "name": "external_id", "type": "text", "primaryKey": false, "notNull": false }, "url": { "name": "url", "type": "text", "primaryKey": false, "notNull": true }, "match_type": { "name": "match_type", "type": "text", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "track_links_external_idx": { "name": "track_links_external_idx", "columns": [ { "expression": "service", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "external_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "track_links_track_id_tracks_id_fk": { "name": "track_links_track_id_tracks_id_fk", "tableFrom": "track_links", "tableTo": "tracks", "columnsFrom": [ "track_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "track_links_track_id_service_pk": { "name": "track_links_track_id_service_pk", "columns": [ "track_id", "service" ] } }, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.tracks": { "name": "tracks", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "isrc": { "name": "isrc", "type": "varchar(12)", "primaryKey": false, "notNull": false }, "match_key": { "name": "match_key", "type": "text", "primaryKey": false, "notNull": true }, "title": { "name": "title", "type": "text", "primaryKey": false, "notNull": true }, "artist": { "name": "artist", "type": "text", "primaryKey": false, "notNull": true }, "album": { "name": "album", "type": "text", "primaryKey": false, "notNull": false }, "duration_ms": { "name": "duration_ms", "type": "integer", "primaryKey": false, "notNull": false }, "artwork_url": { "name": "artwork_url", "type": "text", "primaryKey": false, "notNull": false }, "links_resolved_at": { "name": "links_resolved_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "tracks_isrc_idx": { "name": "tracks_isrc_idx", "columns": [ { "expression": "isrc", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "tracks_match_key_idx": { "name": "tracks_match_key_idx", "columns": [ { "expression": "match_key", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.users": { "name": "users", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "username": { "name": "username", "type": "varchar(32)", "primaryKey": false, "notNull": true }, "email": { "name": "email", "type": "varchar(320)", "primaryKey": false, "notNull": true }, "password_hash": { "name": "password_hash", "type": "text", "primaryKey": false, "notNull": true }, "email_verified_at": { "name": "email_verified_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "pending_email": { "name": "pending_email", "type": "varchar(320)", "primaryKey": false, "notNull": false }, "display_name": { "name": "display_name", "type": "varchar(64)", "primaryKey": false, "notNull": false }, "bio": { "name": "bio", "type": "varchar(280)", "primaryKey": false, "notNull": false }, "avatar_url": { "name": "avatar_url", "type": "varchar(500)", "primaryKey": false, "notNull": false }, "preferred_service": { "name": "preferred_service", "type": "text", "primaryKey": false, "notNull": false }, "role": { "name": "role", "type": "text", "primaryKey": false, "notNull": true, "default": "'user'" }, "suspended_at": { "name": "suspended_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "onboarded_at": { "name": "onboarded_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "sharing_paused_until": { "name": "sharing_paused_until", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "plan": { "name": "plan", "type": "text", "primaryKey": false, "notNull": true, "default": "'free'" }, "plan_expires_at": { "name": "plan_expires_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": { "users_username_unique": { "name": "users_username_unique", "nullsNotDistinct": false, "columns": [ "username" ] }, "users_email_unique": { "name": "users_email_unique", "nullsNotDistinct": false, "columns": [ "email" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false } }, "enums": {}, "schemas": {}, "sequences": {}, "roles": {}, "policies": {}, "views": {}, "_meta": { "columns": {}, "schemas": {}, "tables": {} } }