A decentralized music tracking and discovery platform built on AT Protocol 🎵

Merge branch 'main' into feat/feed-generator

+3247 -1
+1
apps/api/drizzle/0006_slow_bulldozer.sql
··· 1 + ALTER TABLE "spotify_apps" ADD CONSTRAINT "spotify_apps_spotify_app_id_unique" UNIQUE("spotify_app_id");
+3238
apps/api/drizzle/meta/0006_snapshot.json
··· 1 + { 2 + "id": "876823a6-883c-4fec-9072-9ec67f483c8d", 3 + "prevId": "b4f141d3-3e14-4aaf-b3f1-b3165d009289", 4 + "version": "7", 5 + "dialect": "postgresql", 6 + "tables": { 7 + "public.album_tracks": { 8 + "name": "album_tracks", 9 + "schema": "", 10 + "columns": { 11 + "xata_id": { 12 + "name": "xata_id", 13 + "type": "text", 14 + "primaryKey": true, 15 + "notNull": true, 16 + "default": "xata_id()" 17 + }, 18 + "album_id": { 19 + "name": "album_id", 20 + "type": "text", 21 + "primaryKey": false, 22 + "notNull": true 23 + }, 24 + "track_id": { 25 + "name": "track_id", 26 + "type": "text", 27 + "primaryKey": false, 28 + "notNull": true 29 + }, 30 + "xata_createdat": { 31 + "name": "xata_createdat", 32 + "type": "timestamp", 33 + "primaryKey": false, 34 + "notNull": true, 35 + "default": "now()" 36 + }, 37 + "xata_updatedat": { 38 + "name": "xata_updatedat", 39 + "type": "timestamp", 40 + "primaryKey": false, 41 + "notNull": true, 42 + "default": "now()" 43 + }, 44 + "xata_version": { 45 + "name": "xata_version", 46 + "type": "integer", 47 + "primaryKey": false, 48 + "notNull": false 49 + } 50 + }, 51 + "indexes": {}, 52 + "foreignKeys": { 53 + "album_tracks_album_id_albums_xata_id_fk": { 54 + "name": "album_tracks_album_id_albums_xata_id_fk", 55 + "tableFrom": "album_tracks", 56 + "tableTo": "albums", 57 + "columnsFrom": [ 58 + "album_id" 59 + ], 60 + "columnsTo": [ 61 + "xata_id" 62 + ], 63 + "onDelete": "no action", 64 + "onUpdate": "no action" 65 + }, 66 + "album_tracks_track_id_tracks_xata_id_fk": { 67 + "name": "album_tracks_track_id_tracks_xata_id_fk", 68 + "tableFrom": "album_tracks", 69 + "tableTo": "tracks", 70 + "columnsFrom": [ 71 + "track_id" 72 + ], 73 + "columnsTo": [ 74 + "xata_id" 75 + ], 76 + "onDelete": "no action", 77 + "onUpdate": "no action" 78 + } 79 + }, 80 + "compositePrimaryKeys": {}, 81 + "uniqueConstraints": {}, 82 + "policies": {}, 83 + "checkConstraints": {}, 84 + "isRLSEnabled": false 85 + }, 86 + "public.albums": { 87 + "name": "albums", 88 + "schema": "", 89 + "columns": { 90 + "xata_id": { 91 + "name": "xata_id", 92 + "type": "text", 93 + "primaryKey": true, 94 + "notNull": true, 95 + "default": "xata_id()" 96 + }, 97 + "title": { 98 + "name": "title", 99 + "type": "text", 100 + "primaryKey": false, 101 + "notNull": true 102 + }, 103 + "artist": { 104 + "name": "artist", 105 + "type": "text", 106 + "primaryKey": false, 107 + "notNull": true 108 + }, 109 + "release_date": { 110 + "name": "release_date", 111 + "type": "text", 112 + "primaryKey": false, 113 + "notNull": false 114 + }, 115 + "year": { 116 + "name": "year", 117 + "type": "integer", 118 + "primaryKey": false, 119 + "notNull": false 120 + }, 121 + "album_art": { 122 + "name": "album_art", 123 + "type": "text", 124 + "primaryKey": false, 125 + "notNull": false 126 + }, 127 + "uri": { 128 + "name": "uri", 129 + "type": "text", 130 + "primaryKey": false, 131 + "notNull": false 132 + }, 133 + "artist_uri": { 134 + "name": "artist_uri", 135 + "type": "text", 136 + "primaryKey": false, 137 + "notNull": false 138 + }, 139 + "apple_music_link": { 140 + "name": "apple_music_link", 141 + "type": "text", 142 + "primaryKey": false, 143 + "notNull": false 144 + }, 145 + "spotify_link": { 146 + "name": "spotify_link", 147 + "type": "text", 148 + "primaryKey": false, 149 + "notNull": false 150 + }, 151 + "tidal_link": { 152 + "name": "tidal_link", 153 + "type": "text", 154 + "primaryKey": false, 155 + "notNull": false 156 + }, 157 + "youtube_link": { 158 + "name": "youtube_link", 159 + "type": "text", 160 + "primaryKey": false, 161 + "notNull": false 162 + }, 163 + "sha256": { 164 + "name": "sha256", 165 + "type": "text", 166 + "primaryKey": false, 167 + "notNull": true 168 + }, 169 + "xata_createdat": { 170 + "name": "xata_createdat", 171 + "type": "timestamp", 172 + "primaryKey": false, 173 + "notNull": true, 174 + "default": "now()" 175 + }, 176 + "xata_updatedat": { 177 + "name": "xata_updatedat", 178 + "type": "timestamp", 179 + "primaryKey": false, 180 + "notNull": true, 181 + "default": "now()" 182 + }, 183 + "xata_version": { 184 + "name": "xata_version", 185 + "type": "integer", 186 + "primaryKey": false, 187 + "notNull": false 188 + } 189 + }, 190 + "indexes": {}, 191 + "foreignKeys": {}, 192 + "compositePrimaryKeys": {}, 193 + "uniqueConstraints": { 194 + "albums_uri_unique": { 195 + "name": "albums_uri_unique", 196 + "nullsNotDistinct": false, 197 + "columns": [ 198 + "uri" 199 + ] 200 + }, 201 + "albums_apple_music_link_unique": { 202 + "name": "albums_apple_music_link_unique", 203 + "nullsNotDistinct": false, 204 + "columns": [ 205 + "apple_music_link" 206 + ] 207 + }, 208 + "albums_spotify_link_unique": { 209 + "name": "albums_spotify_link_unique", 210 + "nullsNotDistinct": false, 211 + "columns": [ 212 + "spotify_link" 213 + ] 214 + }, 215 + "albums_tidal_link_unique": { 216 + "name": "albums_tidal_link_unique", 217 + "nullsNotDistinct": false, 218 + "columns": [ 219 + "tidal_link" 220 + ] 221 + }, 222 + "albums_youtube_link_unique": { 223 + "name": "albums_youtube_link_unique", 224 + "nullsNotDistinct": false, 225 + "columns": [ 226 + "youtube_link" 227 + ] 228 + }, 229 + "albums_sha256_unique": { 230 + "name": "albums_sha256_unique", 231 + "nullsNotDistinct": false, 232 + "columns": [ 233 + "sha256" 234 + ] 235 + } 236 + }, 237 + "policies": {}, 238 + "checkConstraints": {}, 239 + "isRLSEnabled": false 240 + }, 241 + "public.api_keys": { 242 + "name": "api_keys", 243 + "schema": "", 244 + "columns": { 245 + "xata_id": { 246 + "name": "xata_id", 247 + "type": "text", 248 + "primaryKey": true, 249 + "notNull": true, 250 + "default": "xata_id()" 251 + }, 252 + "name": { 253 + "name": "name", 254 + "type": "text", 255 + "primaryKey": false, 256 + "notNull": true 257 + }, 258 + "api_key": { 259 + "name": "api_key", 260 + "type": "text", 261 + "primaryKey": false, 262 + "notNull": true 263 + }, 264 + "shared_secret": { 265 + "name": "shared_secret", 266 + "type": "text", 267 + "primaryKey": false, 268 + "notNull": true 269 + }, 270 + "description": { 271 + "name": "description", 272 + "type": "text", 273 + "primaryKey": false, 274 + "notNull": false 275 + }, 276 + "enabled": { 277 + "name": "enabled", 278 + "type": "boolean", 279 + "primaryKey": false, 280 + "notNull": true, 281 + "default": true 282 + }, 283 + "user_id": { 284 + "name": "user_id", 285 + "type": "text", 286 + "primaryKey": false, 287 + "notNull": true 288 + }, 289 + "xata_createdat": { 290 + "name": "xata_createdat", 291 + "type": "timestamp", 292 + "primaryKey": false, 293 + "notNull": true, 294 + "default": "now()" 295 + }, 296 + "xata_updatedat": { 297 + "name": "xata_updatedat", 298 + "type": "timestamp", 299 + "primaryKey": false, 300 + "notNull": true, 301 + "default": "now()" 302 + } 303 + }, 304 + "indexes": {}, 305 + "foreignKeys": { 306 + "api_keys_user_id_users_xata_id_fk": { 307 + "name": "api_keys_user_id_users_xata_id_fk", 308 + "tableFrom": "api_keys", 309 + "tableTo": "users", 310 + "columnsFrom": [ 311 + "user_id" 312 + ], 313 + "columnsTo": [ 314 + "xata_id" 315 + ], 316 + "onDelete": "no action", 317 + "onUpdate": "no action" 318 + } 319 + }, 320 + "compositePrimaryKeys": {}, 321 + "uniqueConstraints": {}, 322 + "policies": {}, 323 + "checkConstraints": {}, 324 + "isRLSEnabled": false 325 + }, 326 + "public.artist_albums": { 327 + "name": "artist_albums", 328 + "schema": "", 329 + "columns": { 330 + "xata_id": { 331 + "name": "xata_id", 332 + "type": "text", 333 + "primaryKey": true, 334 + "notNull": true, 335 + "default": "xata_id()" 336 + }, 337 + "artist_id": { 338 + "name": "artist_id", 339 + "type": "text", 340 + "primaryKey": false, 341 + "notNull": true 342 + }, 343 + "album_id": { 344 + "name": "album_id", 345 + "type": "text", 346 + "primaryKey": false, 347 + "notNull": true 348 + }, 349 + "xata_createdat": { 350 + "name": "xata_createdat", 351 + "type": "timestamp", 352 + "primaryKey": false, 353 + "notNull": true, 354 + "default": "now()" 355 + }, 356 + "xata_updatedat": { 357 + "name": "xata_updatedat", 358 + "type": "timestamp", 359 + "primaryKey": false, 360 + "notNull": true, 361 + "default": "now()" 362 + }, 363 + "xata_version": { 364 + "name": "xata_version", 365 + "type": "integer", 366 + "primaryKey": false, 367 + "notNull": false 368 + } 369 + }, 370 + "indexes": {}, 371 + "foreignKeys": { 372 + "artist_albums_artist_id_artists_xata_id_fk": { 373 + "name": "artist_albums_artist_id_artists_xata_id_fk", 374 + "tableFrom": "artist_albums", 375 + "tableTo": "artists", 376 + "columnsFrom": [ 377 + "artist_id" 378 + ], 379 + "columnsTo": [ 380 + "xata_id" 381 + ], 382 + "onDelete": "no action", 383 + "onUpdate": "no action" 384 + }, 385 + "artist_albums_album_id_albums_xata_id_fk": { 386 + "name": "artist_albums_album_id_albums_xata_id_fk", 387 + "tableFrom": "artist_albums", 388 + "tableTo": "albums", 389 + "columnsFrom": [ 390 + "album_id" 391 + ], 392 + "columnsTo": [ 393 + "xata_id" 394 + ], 395 + "onDelete": "no action", 396 + "onUpdate": "no action" 397 + } 398 + }, 399 + "compositePrimaryKeys": {}, 400 + "uniqueConstraints": {}, 401 + "policies": {}, 402 + "checkConstraints": {}, 403 + "isRLSEnabled": false 404 + }, 405 + "public.artist_tracks": { 406 + "name": "artist_tracks", 407 + "schema": "", 408 + "columns": { 409 + "xata_id": { 410 + "name": "xata_id", 411 + "type": "text", 412 + "primaryKey": true, 413 + "notNull": true, 414 + "default": "xata_id()" 415 + }, 416 + "artist_id": { 417 + "name": "artist_id", 418 + "type": "text", 419 + "primaryKey": false, 420 + "notNull": true 421 + }, 422 + "track_id": { 423 + "name": "track_id", 424 + "type": "text", 425 + "primaryKey": false, 426 + "notNull": true 427 + }, 428 + "xata_createdat": { 429 + "name": "xata_createdat", 430 + "type": "timestamp", 431 + "primaryKey": false, 432 + "notNull": true, 433 + "default": "now()" 434 + }, 435 + "xata_updatedat": { 436 + "name": "xata_updatedat", 437 + "type": "timestamp", 438 + "primaryKey": false, 439 + "notNull": true, 440 + "default": "now()" 441 + }, 442 + "xata_version": { 443 + "name": "xata_version", 444 + "type": "integer", 445 + "primaryKey": false, 446 + "notNull": false 447 + } 448 + }, 449 + "indexes": {}, 450 + "foreignKeys": { 451 + "artist_tracks_artist_id_artists_xata_id_fk": { 452 + "name": "artist_tracks_artist_id_artists_xata_id_fk", 453 + "tableFrom": "artist_tracks", 454 + "tableTo": "artists", 455 + "columnsFrom": [ 456 + "artist_id" 457 + ], 458 + "columnsTo": [ 459 + "xata_id" 460 + ], 461 + "onDelete": "no action", 462 + "onUpdate": "no action" 463 + }, 464 + "artist_tracks_track_id_tracks_xata_id_fk": { 465 + "name": "artist_tracks_track_id_tracks_xata_id_fk", 466 + "tableFrom": "artist_tracks", 467 + "tableTo": "tracks", 468 + "columnsFrom": [ 469 + "track_id" 470 + ], 471 + "columnsTo": [ 472 + "xata_id" 473 + ], 474 + "onDelete": "no action", 475 + "onUpdate": "no action" 476 + } 477 + }, 478 + "compositePrimaryKeys": {}, 479 + "uniqueConstraints": {}, 480 + "policies": {}, 481 + "checkConstraints": {}, 482 + "isRLSEnabled": false 483 + }, 484 + "public.artists": { 485 + "name": "artists", 486 + "schema": "", 487 + "columns": { 488 + "xata_id": { 489 + "name": "xata_id", 490 + "type": "text", 491 + "primaryKey": true, 492 + "notNull": true, 493 + "default": "xata_id()" 494 + }, 495 + "name": { 496 + "name": "name", 497 + "type": "text", 498 + "primaryKey": false, 499 + "notNull": true 500 + }, 501 + "biography": { 502 + "name": "biography", 503 + "type": "text", 504 + "primaryKey": false, 505 + "notNull": false 506 + }, 507 + "born": { 508 + "name": "born", 509 + "type": "timestamp", 510 + "primaryKey": false, 511 + "notNull": false 512 + }, 513 + "born_in": { 514 + "name": "born_in", 515 + "type": "text", 516 + "primaryKey": false, 517 + "notNull": false 518 + }, 519 + "died": { 520 + "name": "died", 521 + "type": "timestamp", 522 + "primaryKey": false, 523 + "notNull": false 524 + }, 525 + "picture": { 526 + "name": "picture", 527 + "type": "text", 528 + "primaryKey": false, 529 + "notNull": false 530 + }, 531 + "sha256": { 532 + "name": "sha256", 533 + "type": "text", 534 + "primaryKey": false, 535 + "notNull": true 536 + }, 537 + "uri": { 538 + "name": "uri", 539 + "type": "text", 540 + "primaryKey": false, 541 + "notNull": false 542 + }, 543 + "apple_music_link": { 544 + "name": "apple_music_link", 545 + "type": "text", 546 + "primaryKey": false, 547 + "notNull": false 548 + }, 549 + "spotify_link": { 550 + "name": "spotify_link", 551 + "type": "text", 552 + "primaryKey": false, 553 + "notNull": false 554 + }, 555 + "tidal_link": { 556 + "name": "tidal_link", 557 + "type": "text", 558 + "primaryKey": false, 559 + "notNull": false 560 + }, 561 + "youtube_link": { 562 + "name": "youtube_link", 563 + "type": "text", 564 + "primaryKey": false, 565 + "notNull": false 566 + }, 567 + "genres": { 568 + "name": "genres", 569 + "type": "text[]", 570 + "primaryKey": false, 571 + "notNull": false 572 + }, 573 + "xata_createdat": { 574 + "name": "xata_createdat", 575 + "type": "timestamp", 576 + "primaryKey": false, 577 + "notNull": true, 578 + "default": "now()" 579 + }, 580 + "xata_updatedat": { 581 + "name": "xata_updatedat", 582 + "type": "timestamp", 583 + "primaryKey": false, 584 + "notNull": true, 585 + "default": "now()" 586 + }, 587 + "xata_version": { 588 + "name": "xata_version", 589 + "type": "integer", 590 + "primaryKey": false, 591 + "notNull": false 592 + } 593 + }, 594 + "indexes": {}, 595 + "foreignKeys": {}, 596 + "compositePrimaryKeys": {}, 597 + "uniqueConstraints": { 598 + "artists_sha256_unique": { 599 + "name": "artists_sha256_unique", 600 + "nullsNotDistinct": false, 601 + "columns": [ 602 + "sha256" 603 + ] 604 + }, 605 + "artists_uri_unique": { 606 + "name": "artists_uri_unique", 607 + "nullsNotDistinct": false, 608 + "columns": [ 609 + "uri" 610 + ] 611 + } 612 + }, 613 + "policies": {}, 614 + "checkConstraints": {}, 615 + "isRLSEnabled": false 616 + }, 617 + "public.dropbox_accounts": { 618 + "name": "dropbox_accounts", 619 + "schema": "", 620 + "columns": { 621 + "xata_id": { 622 + "name": "xata_id", 623 + "type": "text", 624 + "primaryKey": true, 625 + "notNull": true, 626 + "default": "xata_id()" 627 + }, 628 + "email": { 629 + "name": "email", 630 + "type": "text", 631 + "primaryKey": false, 632 + "notNull": true 633 + }, 634 + "is_beta_user": { 635 + "name": "is_beta_user", 636 + "type": "boolean", 637 + "primaryKey": false, 638 + "notNull": true, 639 + "default": false 640 + }, 641 + "user_id": { 642 + "name": "user_id", 643 + "type": "text", 644 + "primaryKey": false, 645 + "notNull": true 646 + }, 647 + "xata_version": { 648 + "name": "xata_version", 649 + "type": "text", 650 + "primaryKey": false, 651 + "notNull": false 652 + }, 653 + "xata_createdat": { 654 + "name": "xata_createdat", 655 + "type": "timestamp", 656 + "primaryKey": false, 657 + "notNull": true, 658 + "default": "now()" 659 + }, 660 + "xata_updatedat": { 661 + "name": "xata_updatedat", 662 + "type": "timestamp", 663 + "primaryKey": false, 664 + "notNull": true, 665 + "default": "now()" 666 + } 667 + }, 668 + "indexes": {}, 669 + "foreignKeys": { 670 + "dropbox_accounts_user_id_users_xata_id_fk": { 671 + "name": "dropbox_accounts_user_id_users_xata_id_fk", 672 + "tableFrom": "dropbox_accounts", 673 + "tableTo": "users", 674 + "columnsFrom": [ 675 + "user_id" 676 + ], 677 + "columnsTo": [ 678 + "xata_id" 679 + ], 680 + "onDelete": "no action", 681 + "onUpdate": "no action" 682 + } 683 + }, 684 + "compositePrimaryKeys": {}, 685 + "uniqueConstraints": { 686 + "dropbox_accounts_email_unique": { 687 + "name": "dropbox_accounts_email_unique", 688 + "nullsNotDistinct": false, 689 + "columns": [ 690 + "email" 691 + ] 692 + } 693 + }, 694 + "policies": {}, 695 + "checkConstraints": {}, 696 + "isRLSEnabled": false 697 + }, 698 + "public.dropbox_directories": { 699 + "name": "dropbox_directories", 700 + "schema": "", 701 + "columns": { 702 + "xata_id": { 703 + "name": "xata_id", 704 + "type": "text", 705 + "primaryKey": true, 706 + "notNull": true, 707 + "default": "xata_id()" 708 + }, 709 + "name": { 710 + "name": "name", 711 + "type": "text", 712 + "primaryKey": false, 713 + "notNull": true 714 + }, 715 + "path": { 716 + "name": "path", 717 + "type": "text", 718 + "primaryKey": false, 719 + "notNull": true 720 + }, 721 + "parent_id": { 722 + "name": "parent_id", 723 + "type": "text", 724 + "primaryKey": false, 725 + "notNull": false 726 + }, 727 + "dropbox_id": { 728 + "name": "dropbox_id", 729 + "type": "text", 730 + "primaryKey": false, 731 + "notNull": true 732 + }, 733 + "file_id": { 734 + "name": "file_id", 735 + "type": "text", 736 + "primaryKey": false, 737 + "notNull": true 738 + }, 739 + "xata_version": { 740 + "name": "xata_version", 741 + "type": "text", 742 + "primaryKey": false, 743 + "notNull": false 744 + }, 745 + "xata_createdat": { 746 + "name": "xata_createdat", 747 + "type": "timestamp", 748 + "primaryKey": false, 749 + "notNull": true, 750 + "default": "now()" 751 + }, 752 + "xata_updatedat": { 753 + "name": "xata_updatedat", 754 + "type": "timestamp", 755 + "primaryKey": false, 756 + "notNull": true, 757 + "default": "now()" 758 + } 759 + }, 760 + "indexes": {}, 761 + "foreignKeys": { 762 + "dropbox_directories_parent_id_dropbox_directories_xata_id_fk": { 763 + "name": "dropbox_directories_parent_id_dropbox_directories_xata_id_fk", 764 + "tableFrom": "dropbox_directories", 765 + "tableTo": "dropbox_directories", 766 + "columnsFrom": [ 767 + "parent_id" 768 + ], 769 + "columnsTo": [ 770 + "xata_id" 771 + ], 772 + "onDelete": "no action", 773 + "onUpdate": "no action" 774 + } 775 + }, 776 + "compositePrimaryKeys": {}, 777 + "uniqueConstraints": { 778 + "dropbox_directories_file_id_unique": { 779 + "name": "dropbox_directories_file_id_unique", 780 + "nullsNotDistinct": false, 781 + "columns": [ 782 + "file_id" 783 + ] 784 + } 785 + }, 786 + "policies": {}, 787 + "checkConstraints": {}, 788 + "isRLSEnabled": false 789 + }, 790 + "public.dropbox_paths": { 791 + "name": "dropbox_paths", 792 + "schema": "", 793 + "columns": { 794 + "xata_id": { 795 + "name": "xata_id", 796 + "type": "text", 797 + "primaryKey": true, 798 + "notNull": true, 799 + "default": "xata_id()" 800 + }, 801 + "path": { 802 + "name": "path", 803 + "type": "text", 804 + "primaryKey": false, 805 + "notNull": true 806 + }, 807 + "name": { 808 + "name": "name", 809 + "type": "text", 810 + "primaryKey": false, 811 + "notNull": true 812 + }, 813 + "dropbox_id": { 814 + "name": "dropbox_id", 815 + "type": "text", 816 + "primaryKey": false, 817 + "notNull": true 818 + }, 819 + "track_id": { 820 + "name": "track_id", 821 + "type": "text", 822 + "primaryKey": false, 823 + "notNull": true 824 + }, 825 + "directory_id": { 826 + "name": "directory_id", 827 + "type": "text", 828 + "primaryKey": false, 829 + "notNull": false 830 + }, 831 + "file_id": { 832 + "name": "file_id", 833 + "type": "text", 834 + "primaryKey": false, 835 + "notNull": true 836 + }, 837 + "xata_version": { 838 + "name": "xata_version", 839 + "type": "text", 840 + "primaryKey": false, 841 + "notNull": false 842 + }, 843 + "xata_createdat": { 844 + "name": "xata_createdat", 845 + "type": "timestamp", 846 + "primaryKey": false, 847 + "notNull": true, 848 + "default": "now()" 849 + }, 850 + "xata_updatedat": { 851 + "name": "xata_updatedat", 852 + "type": "timestamp", 853 + "primaryKey": false, 854 + "notNull": true, 855 + "default": "now()" 856 + } 857 + }, 858 + "indexes": {}, 859 + "foreignKeys": { 860 + "dropbox_paths_directory_id_dropbox_directories_xata_id_fk": { 861 + "name": "dropbox_paths_directory_id_dropbox_directories_xata_id_fk", 862 + "tableFrom": "dropbox_paths", 863 + "tableTo": "dropbox_directories", 864 + "columnsFrom": [ 865 + "directory_id" 866 + ], 867 + "columnsTo": [ 868 + "xata_id" 869 + ], 870 + "onDelete": "no action", 871 + "onUpdate": "no action" 872 + } 873 + }, 874 + "compositePrimaryKeys": {}, 875 + "uniqueConstraints": { 876 + "dropbox_paths_file_id_unique": { 877 + "name": "dropbox_paths_file_id_unique", 878 + "nullsNotDistinct": false, 879 + "columns": [ 880 + "file_id" 881 + ] 882 + } 883 + }, 884 + "policies": {}, 885 + "checkConstraints": {}, 886 + "isRLSEnabled": false 887 + }, 888 + "public.dropbox_tokens": { 889 + "name": "dropbox_tokens", 890 + "schema": "", 891 + "columns": { 892 + "xata_id": { 893 + "name": "xata_id", 894 + "type": "text", 895 + "primaryKey": true, 896 + "notNull": true, 897 + "default": "xata_id()" 898 + }, 899 + "refresh_token": { 900 + "name": "refresh_token", 901 + "type": "text", 902 + "primaryKey": false, 903 + "notNull": true 904 + }, 905 + "xata_createdat": { 906 + "name": "xata_createdat", 907 + "type": "timestamp", 908 + "primaryKey": false, 909 + "notNull": true, 910 + "default": "now()" 911 + }, 912 + "xata_updatedat": { 913 + "name": "xata_updatedat", 914 + "type": "timestamp", 915 + "primaryKey": false, 916 + "notNull": true, 917 + "default": "now()" 918 + } 919 + }, 920 + "indexes": {}, 921 + "foreignKeys": {}, 922 + "compositePrimaryKeys": {}, 923 + "uniqueConstraints": {}, 924 + "policies": {}, 925 + "checkConstraints": {}, 926 + "isRLSEnabled": false 927 + }, 928 + "public.dropbox": { 929 + "name": "dropbox", 930 + "schema": "", 931 + "columns": { 932 + "xata_id": { 933 + "name": "xata_id", 934 + "type": "text", 935 + "primaryKey": true, 936 + "notNull": true, 937 + "default": "xata_id()" 938 + }, 939 + "user_id": { 940 + "name": "user_id", 941 + "type": "text", 942 + "primaryKey": false, 943 + "notNull": true 944 + }, 945 + "dropbox_token_id": { 946 + "name": "dropbox_token_id", 947 + "type": "text", 948 + "primaryKey": false, 949 + "notNull": true 950 + }, 951 + "xata_version": { 952 + "name": "xata_version", 953 + "type": "text", 954 + "primaryKey": false, 955 + "notNull": false 956 + }, 957 + "xata_createdat": { 958 + "name": "xata_createdat", 959 + "type": "timestamp", 960 + "primaryKey": false, 961 + "notNull": true, 962 + "default": "now()" 963 + }, 964 + "xata_updatedat": { 965 + "name": "xata_updatedat", 966 + "type": "timestamp", 967 + "primaryKey": false, 968 + "notNull": true, 969 + "default": "now()" 970 + } 971 + }, 972 + "indexes": {}, 973 + "foreignKeys": { 974 + "dropbox_user_id_users_xata_id_fk": { 975 + "name": "dropbox_user_id_users_xata_id_fk", 976 + "tableFrom": "dropbox", 977 + "tableTo": "users", 978 + "columnsFrom": [ 979 + "user_id" 980 + ], 981 + "columnsTo": [ 982 + "xata_id" 983 + ], 984 + "onDelete": "no action", 985 + "onUpdate": "no action" 986 + }, 987 + "dropbox_dropbox_token_id_dropbox_tokens_xata_id_fk": { 988 + "name": "dropbox_dropbox_token_id_dropbox_tokens_xata_id_fk", 989 + "tableFrom": "dropbox", 990 + "tableTo": "dropbox_tokens", 991 + "columnsFrom": [ 992 + "dropbox_token_id" 993 + ], 994 + "columnsTo": [ 995 + "xata_id" 996 + ], 997 + "onDelete": "no action", 998 + "onUpdate": "no action" 999 + } 1000 + }, 1001 + "compositePrimaryKeys": {}, 1002 + "uniqueConstraints": {}, 1003 + "policies": {}, 1004 + "checkConstraints": {}, 1005 + "isRLSEnabled": false 1006 + }, 1007 + "public.google_drive_accounts": { 1008 + "name": "google_drive_accounts", 1009 + "schema": "", 1010 + "columns": { 1011 + "xata_id": { 1012 + "name": "xata_id", 1013 + "type": "text", 1014 + "primaryKey": true, 1015 + "notNull": true, 1016 + "default": "xata_id()" 1017 + }, 1018 + "email": { 1019 + "name": "email", 1020 + "type": "text", 1021 + "primaryKey": false, 1022 + "notNull": true 1023 + }, 1024 + "is_beta_user": { 1025 + "name": "is_beta_user", 1026 + "type": "boolean", 1027 + "primaryKey": false, 1028 + "notNull": true, 1029 + "default": false 1030 + }, 1031 + "user_id": { 1032 + "name": "user_id", 1033 + "type": "text", 1034 + "primaryKey": false, 1035 + "notNull": true 1036 + }, 1037 + "xata_version": { 1038 + "name": "xata_version", 1039 + "type": "text", 1040 + "primaryKey": false, 1041 + "notNull": false 1042 + }, 1043 + "xata_createdat": { 1044 + "name": "xata_createdat", 1045 + "type": "timestamp", 1046 + "primaryKey": false, 1047 + "notNull": true, 1048 + "default": "now()" 1049 + }, 1050 + "xata_updatedat": { 1051 + "name": "xata_updatedat", 1052 + "type": "timestamp", 1053 + "primaryKey": false, 1054 + "notNull": true, 1055 + "default": "now()" 1056 + } 1057 + }, 1058 + "indexes": {}, 1059 + "foreignKeys": { 1060 + "google_drive_accounts_user_id_users_xata_id_fk": { 1061 + "name": "google_drive_accounts_user_id_users_xata_id_fk", 1062 + "tableFrom": "google_drive_accounts", 1063 + "tableTo": "users", 1064 + "columnsFrom": [ 1065 + "user_id" 1066 + ], 1067 + "columnsTo": [ 1068 + "xata_id" 1069 + ], 1070 + "onDelete": "no action", 1071 + "onUpdate": "no action" 1072 + } 1073 + }, 1074 + "compositePrimaryKeys": {}, 1075 + "uniqueConstraints": { 1076 + "google_drive_accounts_email_unique": { 1077 + "name": "google_drive_accounts_email_unique", 1078 + "nullsNotDistinct": false, 1079 + "columns": [ 1080 + "email" 1081 + ] 1082 + } 1083 + }, 1084 + "policies": {}, 1085 + "checkConstraints": {}, 1086 + "isRLSEnabled": false 1087 + }, 1088 + "public.google_drive_directories": { 1089 + "name": "google_drive_directories", 1090 + "schema": "", 1091 + "columns": { 1092 + "xata_id": { 1093 + "name": "xata_id", 1094 + "type": "text", 1095 + "primaryKey": true, 1096 + "notNull": true, 1097 + "default": "xata_id()" 1098 + }, 1099 + "name": { 1100 + "name": "name", 1101 + "type": "text", 1102 + "primaryKey": false, 1103 + "notNull": true 1104 + }, 1105 + "path": { 1106 + "name": "path", 1107 + "type": "text", 1108 + "primaryKey": false, 1109 + "notNull": true 1110 + }, 1111 + "parent_id": { 1112 + "name": "parent_id", 1113 + "type": "text", 1114 + "primaryKey": false, 1115 + "notNull": false 1116 + }, 1117 + "google_drive_id": { 1118 + "name": "google_drive_id", 1119 + "type": "text", 1120 + "primaryKey": false, 1121 + "notNull": true 1122 + }, 1123 + "file_id": { 1124 + "name": "file_id", 1125 + "type": "text", 1126 + "primaryKey": false, 1127 + "notNull": true 1128 + }, 1129 + "xata_version": { 1130 + "name": "xata_version", 1131 + "type": "text", 1132 + "primaryKey": false, 1133 + "notNull": false 1134 + }, 1135 + "xata_createdat": { 1136 + "name": "xata_createdat", 1137 + "type": "timestamp", 1138 + "primaryKey": false, 1139 + "notNull": true, 1140 + "default": "now()" 1141 + }, 1142 + "xata_updatedat": { 1143 + "name": "xata_updatedat", 1144 + "type": "timestamp", 1145 + "primaryKey": false, 1146 + "notNull": true, 1147 + "default": "now()" 1148 + } 1149 + }, 1150 + "indexes": {}, 1151 + "foreignKeys": { 1152 + "google_drive_directories_parent_id_google_drive_directories_xata_id_fk": { 1153 + "name": "google_drive_directories_parent_id_google_drive_directories_xata_id_fk", 1154 + "tableFrom": "google_drive_directories", 1155 + "tableTo": "google_drive_directories", 1156 + "columnsFrom": [ 1157 + "parent_id" 1158 + ], 1159 + "columnsTo": [ 1160 + "xata_id" 1161 + ], 1162 + "onDelete": "no action", 1163 + "onUpdate": "no action" 1164 + } 1165 + }, 1166 + "compositePrimaryKeys": {}, 1167 + "uniqueConstraints": { 1168 + "google_drive_directories_file_id_unique": { 1169 + "name": "google_drive_directories_file_id_unique", 1170 + "nullsNotDistinct": false, 1171 + "columns": [ 1172 + "file_id" 1173 + ] 1174 + } 1175 + }, 1176 + "policies": {}, 1177 + "checkConstraints": {}, 1178 + "isRLSEnabled": false 1179 + }, 1180 + "public.google_drive_paths": { 1181 + "name": "google_drive_paths", 1182 + "schema": "", 1183 + "columns": { 1184 + "xata_id": { 1185 + "name": "xata_id", 1186 + "type": "text", 1187 + "primaryKey": true, 1188 + "notNull": true, 1189 + "default": "xata_id()" 1190 + }, 1191 + "google_drive_id": { 1192 + "name": "google_drive_id", 1193 + "type": "text", 1194 + "primaryKey": false, 1195 + "notNull": true 1196 + }, 1197 + "track_id": { 1198 + "name": "track_id", 1199 + "type": "text", 1200 + "primaryKey": false, 1201 + "notNull": true 1202 + }, 1203 + "name": { 1204 + "name": "name", 1205 + "type": "text", 1206 + "primaryKey": false, 1207 + "notNull": true 1208 + }, 1209 + "directory_id": { 1210 + "name": "directory_id", 1211 + "type": "text", 1212 + "primaryKey": false, 1213 + "notNull": false 1214 + }, 1215 + "file_id": { 1216 + "name": "file_id", 1217 + "type": "text", 1218 + "primaryKey": false, 1219 + "notNull": true 1220 + }, 1221 + "xata_version": { 1222 + "name": "xata_version", 1223 + "type": "text", 1224 + "primaryKey": false, 1225 + "notNull": false 1226 + }, 1227 + "xata_createdat": { 1228 + "name": "xata_createdat", 1229 + "type": "timestamp", 1230 + "primaryKey": false, 1231 + "notNull": true, 1232 + "default": "now()" 1233 + }, 1234 + "xata_updatedat": { 1235 + "name": "xata_updatedat", 1236 + "type": "timestamp", 1237 + "primaryKey": false, 1238 + "notNull": true, 1239 + "default": "now()" 1240 + } 1241 + }, 1242 + "indexes": {}, 1243 + "foreignKeys": { 1244 + "google_drive_paths_directory_id_google_drive_directories_xata_id_fk": { 1245 + "name": "google_drive_paths_directory_id_google_drive_directories_xata_id_fk", 1246 + "tableFrom": "google_drive_paths", 1247 + "tableTo": "google_drive_directories", 1248 + "columnsFrom": [ 1249 + "directory_id" 1250 + ], 1251 + "columnsTo": [ 1252 + "xata_id" 1253 + ], 1254 + "onDelete": "no action", 1255 + "onUpdate": "no action" 1256 + } 1257 + }, 1258 + "compositePrimaryKeys": {}, 1259 + "uniqueConstraints": { 1260 + "google_drive_paths_file_id_unique": { 1261 + "name": "google_drive_paths_file_id_unique", 1262 + "nullsNotDistinct": false, 1263 + "columns": [ 1264 + "file_id" 1265 + ] 1266 + } 1267 + }, 1268 + "policies": {}, 1269 + "checkConstraints": {}, 1270 + "isRLSEnabled": false 1271 + }, 1272 + "public.google_drive_tokens": { 1273 + "name": "google_drive_tokens", 1274 + "schema": "", 1275 + "columns": { 1276 + "xata_id": { 1277 + "name": "xata_id", 1278 + "type": "text", 1279 + "primaryKey": true, 1280 + "notNull": true, 1281 + "default": "xata_id()" 1282 + }, 1283 + "refresh_token": { 1284 + "name": "refresh_token", 1285 + "type": "text", 1286 + "primaryKey": false, 1287 + "notNull": true 1288 + }, 1289 + "xata_createdat": { 1290 + "name": "xata_createdat", 1291 + "type": "timestamp", 1292 + "primaryKey": false, 1293 + "notNull": true, 1294 + "default": "now()" 1295 + }, 1296 + "xata_updatedat": { 1297 + "name": "xata_updatedat", 1298 + "type": "timestamp", 1299 + "primaryKey": false, 1300 + "notNull": true, 1301 + "default": "now()" 1302 + } 1303 + }, 1304 + "indexes": {}, 1305 + "foreignKeys": {}, 1306 + "compositePrimaryKeys": {}, 1307 + "uniqueConstraints": {}, 1308 + "policies": {}, 1309 + "checkConstraints": {}, 1310 + "isRLSEnabled": false 1311 + }, 1312 + "public.google_drive": { 1313 + "name": "google_drive", 1314 + "schema": "", 1315 + "columns": { 1316 + "xata_id": { 1317 + "name": "xata_id", 1318 + "type": "text", 1319 + "primaryKey": true, 1320 + "notNull": true, 1321 + "default": "xata_id()" 1322 + }, 1323 + "google_drive_token_id": { 1324 + "name": "google_drive_token_id", 1325 + "type": "text", 1326 + "primaryKey": false, 1327 + "notNull": true 1328 + }, 1329 + "user_id": { 1330 + "name": "user_id", 1331 + "type": "text", 1332 + "primaryKey": false, 1333 + "notNull": true 1334 + }, 1335 + "xata_version": { 1336 + "name": "xata_version", 1337 + "type": "text", 1338 + "primaryKey": false, 1339 + "notNull": false 1340 + }, 1341 + "xata_createdat": { 1342 + "name": "xata_createdat", 1343 + "type": "timestamp", 1344 + "primaryKey": false, 1345 + "notNull": true, 1346 + "default": "now()" 1347 + }, 1348 + "xata_updatedat": { 1349 + "name": "xata_updatedat", 1350 + "type": "timestamp", 1351 + "primaryKey": false, 1352 + "notNull": true, 1353 + "default": "now()" 1354 + } 1355 + }, 1356 + "indexes": {}, 1357 + "foreignKeys": { 1358 + "google_drive_google_drive_token_id_google_drive_tokens_xata_id_fk": { 1359 + "name": "google_drive_google_drive_token_id_google_drive_tokens_xata_id_fk", 1360 + "tableFrom": "google_drive", 1361 + "tableTo": "google_drive_tokens", 1362 + "columnsFrom": [ 1363 + "google_drive_token_id" 1364 + ], 1365 + "columnsTo": [ 1366 + "xata_id" 1367 + ], 1368 + "onDelete": "no action", 1369 + "onUpdate": "no action" 1370 + }, 1371 + "google_drive_user_id_users_xata_id_fk": { 1372 + "name": "google_drive_user_id_users_xata_id_fk", 1373 + "tableFrom": "google_drive", 1374 + "tableTo": "users", 1375 + "columnsFrom": [ 1376 + "user_id" 1377 + ], 1378 + "columnsTo": [ 1379 + "xata_id" 1380 + ], 1381 + "onDelete": "no action", 1382 + "onUpdate": "no action" 1383 + } 1384 + }, 1385 + "compositePrimaryKeys": {}, 1386 + "uniqueConstraints": {}, 1387 + "policies": {}, 1388 + "checkConstraints": {}, 1389 + "isRLSEnabled": false 1390 + }, 1391 + "public.loved_tracks": { 1392 + "name": "loved_tracks", 1393 + "schema": "", 1394 + "columns": { 1395 + "xata_id": { 1396 + "name": "xata_id", 1397 + "type": "text", 1398 + "primaryKey": true, 1399 + "notNull": true, 1400 + "default": "xata_id()" 1401 + }, 1402 + "user_id": { 1403 + "name": "user_id", 1404 + "type": "text", 1405 + "primaryKey": false, 1406 + "notNull": true 1407 + }, 1408 + "track_id": { 1409 + "name": "track_id", 1410 + "type": "text", 1411 + "primaryKey": false, 1412 + "notNull": true 1413 + }, 1414 + "uri": { 1415 + "name": "uri", 1416 + "type": "text", 1417 + "primaryKey": false, 1418 + "notNull": false 1419 + }, 1420 + "xata_createdat": { 1421 + "name": "xata_createdat", 1422 + "type": "timestamp", 1423 + "primaryKey": false, 1424 + "notNull": true, 1425 + "default": "now()" 1426 + } 1427 + }, 1428 + "indexes": {}, 1429 + "foreignKeys": { 1430 + "loved_tracks_user_id_users_xata_id_fk": { 1431 + "name": "loved_tracks_user_id_users_xata_id_fk", 1432 + "tableFrom": "loved_tracks", 1433 + "tableTo": "users", 1434 + "columnsFrom": [ 1435 + "user_id" 1436 + ], 1437 + "columnsTo": [ 1438 + "xata_id" 1439 + ], 1440 + "onDelete": "no action", 1441 + "onUpdate": "no action" 1442 + }, 1443 + "loved_tracks_track_id_tracks_xata_id_fk": { 1444 + "name": "loved_tracks_track_id_tracks_xata_id_fk", 1445 + "tableFrom": "loved_tracks", 1446 + "tableTo": "tracks", 1447 + "columnsFrom": [ 1448 + "track_id" 1449 + ], 1450 + "columnsTo": [ 1451 + "xata_id" 1452 + ], 1453 + "onDelete": "no action", 1454 + "onUpdate": "no action" 1455 + } 1456 + }, 1457 + "compositePrimaryKeys": {}, 1458 + "uniqueConstraints": { 1459 + "loved_tracks_uri_unique": { 1460 + "name": "loved_tracks_uri_unique", 1461 + "nullsNotDistinct": false, 1462 + "columns": [ 1463 + "uri" 1464 + ] 1465 + } 1466 + }, 1467 + "policies": {}, 1468 + "checkConstraints": {}, 1469 + "isRLSEnabled": false 1470 + }, 1471 + "public.playlist_tracks": { 1472 + "name": "playlist_tracks", 1473 + "schema": "", 1474 + "columns": { 1475 + "xata_id": { 1476 + "name": "xata_id", 1477 + "type": "text", 1478 + "primaryKey": true, 1479 + "notNull": true, 1480 + "default": "xata_id()" 1481 + }, 1482 + "playlist_id": { 1483 + "name": "playlist_id", 1484 + "type": "text", 1485 + "primaryKey": false, 1486 + "notNull": true 1487 + }, 1488 + "track_id": { 1489 + "name": "track_id", 1490 + "type": "text", 1491 + "primaryKey": false, 1492 + "notNull": true 1493 + }, 1494 + "xata_createdat": { 1495 + "name": "xata_createdat", 1496 + "type": "timestamp", 1497 + "primaryKey": false, 1498 + "notNull": true, 1499 + "default": "now()" 1500 + } 1501 + }, 1502 + "indexes": {}, 1503 + "foreignKeys": { 1504 + "playlist_tracks_playlist_id_playlists_xata_id_fk": { 1505 + "name": "playlist_tracks_playlist_id_playlists_xata_id_fk", 1506 + "tableFrom": "playlist_tracks", 1507 + "tableTo": "playlists", 1508 + "columnsFrom": [ 1509 + "playlist_id" 1510 + ], 1511 + "columnsTo": [ 1512 + "xata_id" 1513 + ], 1514 + "onDelete": "no action", 1515 + "onUpdate": "no action" 1516 + }, 1517 + "playlist_tracks_track_id_tracks_xata_id_fk": { 1518 + "name": "playlist_tracks_track_id_tracks_xata_id_fk", 1519 + "tableFrom": "playlist_tracks", 1520 + "tableTo": "tracks", 1521 + "columnsFrom": [ 1522 + "track_id" 1523 + ], 1524 + "columnsTo": [ 1525 + "xata_id" 1526 + ], 1527 + "onDelete": "no action", 1528 + "onUpdate": "no action" 1529 + } 1530 + }, 1531 + "compositePrimaryKeys": {}, 1532 + "uniqueConstraints": {}, 1533 + "policies": {}, 1534 + "checkConstraints": {}, 1535 + "isRLSEnabled": false 1536 + }, 1537 + "public.playlists": { 1538 + "name": "playlists", 1539 + "schema": "", 1540 + "columns": { 1541 + "xata_id": { 1542 + "name": "xata_id", 1543 + "type": "text", 1544 + "primaryKey": true, 1545 + "notNull": true, 1546 + "default": "xata_id()" 1547 + }, 1548 + "name": { 1549 + "name": "name", 1550 + "type": "text", 1551 + "primaryKey": false, 1552 + "notNull": true 1553 + }, 1554 + "picture": { 1555 + "name": "picture", 1556 + "type": "text", 1557 + "primaryKey": false, 1558 + "notNull": false 1559 + }, 1560 + "description": { 1561 + "name": "description", 1562 + "type": "text", 1563 + "primaryKey": false, 1564 + "notNull": false 1565 + }, 1566 + "uri": { 1567 + "name": "uri", 1568 + "type": "text", 1569 + "primaryKey": false, 1570 + "notNull": false 1571 + }, 1572 + "spotify_link": { 1573 + "name": "spotify_link", 1574 + "type": "text", 1575 + "primaryKey": false, 1576 + "notNull": false 1577 + }, 1578 + "tidal_link": { 1579 + "name": "tidal_link", 1580 + "type": "text", 1581 + "primaryKey": false, 1582 + "notNull": false 1583 + }, 1584 + "apple_music_link": { 1585 + "name": "apple_music_link", 1586 + "type": "text", 1587 + "primaryKey": false, 1588 + "notNull": false 1589 + }, 1590 + "created_by": { 1591 + "name": "created_by", 1592 + "type": "text", 1593 + "primaryKey": false, 1594 + "notNull": true 1595 + }, 1596 + "xata_createdat": { 1597 + "name": "xata_createdat", 1598 + "type": "timestamp", 1599 + "primaryKey": false, 1600 + "notNull": true, 1601 + "default": "now()" 1602 + }, 1603 + "xata_updatedat": { 1604 + "name": "xata_updatedat", 1605 + "type": "timestamp", 1606 + "primaryKey": false, 1607 + "notNull": true, 1608 + "default": "now()" 1609 + } 1610 + }, 1611 + "indexes": {}, 1612 + "foreignKeys": { 1613 + "playlists_created_by_users_xata_id_fk": { 1614 + "name": "playlists_created_by_users_xata_id_fk", 1615 + "tableFrom": "playlists", 1616 + "tableTo": "users", 1617 + "columnsFrom": [ 1618 + "created_by" 1619 + ], 1620 + "columnsTo": [ 1621 + "xata_id" 1622 + ], 1623 + "onDelete": "no action", 1624 + "onUpdate": "no action" 1625 + } 1626 + }, 1627 + "compositePrimaryKeys": {}, 1628 + "uniqueConstraints": { 1629 + "playlists_uri_unique": { 1630 + "name": "playlists_uri_unique", 1631 + "nullsNotDistinct": false, 1632 + "columns": [ 1633 + "uri" 1634 + ] 1635 + } 1636 + }, 1637 + "policies": {}, 1638 + "checkConstraints": {}, 1639 + "isRLSEnabled": false 1640 + }, 1641 + "public.profile_shouts": { 1642 + "name": "profile_shouts", 1643 + "schema": "", 1644 + "columns": { 1645 + "xata_id": { 1646 + "name": "xata_id", 1647 + "type": "text", 1648 + "primaryKey": true, 1649 + "notNull": true, 1650 + "default": "xata_id()" 1651 + }, 1652 + "user_id": { 1653 + "name": "user_id", 1654 + "type": "text", 1655 + "primaryKey": false, 1656 + "notNull": true 1657 + }, 1658 + "shout_id": { 1659 + "name": "shout_id", 1660 + "type": "text", 1661 + "primaryKey": false, 1662 + "notNull": true 1663 + }, 1664 + "xata_createdat": { 1665 + "name": "xata_createdat", 1666 + "type": "timestamp", 1667 + "primaryKey": false, 1668 + "notNull": true, 1669 + "default": "now()" 1670 + } 1671 + }, 1672 + "indexes": {}, 1673 + "foreignKeys": { 1674 + "profile_shouts_user_id_users_xata_id_fk": { 1675 + "name": "profile_shouts_user_id_users_xata_id_fk", 1676 + "tableFrom": "profile_shouts", 1677 + "tableTo": "users", 1678 + "columnsFrom": [ 1679 + "user_id" 1680 + ], 1681 + "columnsTo": [ 1682 + "xata_id" 1683 + ], 1684 + "onDelete": "no action", 1685 + "onUpdate": "no action" 1686 + }, 1687 + "profile_shouts_shout_id_shouts_xata_id_fk": { 1688 + "name": "profile_shouts_shout_id_shouts_xata_id_fk", 1689 + "tableFrom": "profile_shouts", 1690 + "tableTo": "shouts", 1691 + "columnsFrom": [ 1692 + "shout_id" 1693 + ], 1694 + "columnsTo": [ 1695 + "xata_id" 1696 + ], 1697 + "onDelete": "no action", 1698 + "onUpdate": "no action" 1699 + } 1700 + }, 1701 + "compositePrimaryKeys": {}, 1702 + "uniqueConstraints": {}, 1703 + "policies": {}, 1704 + "checkConstraints": {}, 1705 + "isRLSEnabled": false 1706 + }, 1707 + "public.queue_tracks": { 1708 + "name": "queue_tracks", 1709 + "schema": "", 1710 + "columns": { 1711 + "xata_id": { 1712 + "name": "xata_id", 1713 + "type": "text", 1714 + "primaryKey": true, 1715 + "notNull": true, 1716 + "default": "xata_id()" 1717 + }, 1718 + "user_id": { 1719 + "name": "user_id", 1720 + "type": "text", 1721 + "primaryKey": false, 1722 + "notNull": true 1723 + }, 1724 + "track_id": { 1725 + "name": "track_id", 1726 + "type": "text", 1727 + "primaryKey": false, 1728 + "notNull": true 1729 + }, 1730 + "position": { 1731 + "name": "position", 1732 + "type": "integer", 1733 + "primaryKey": false, 1734 + "notNull": true 1735 + }, 1736 + "file_uri": { 1737 + "name": "file_uri", 1738 + "type": "text", 1739 + "primaryKey": false, 1740 + "notNull": true 1741 + }, 1742 + "xata_version": { 1743 + "name": "xata_version", 1744 + "type": "integer", 1745 + "primaryKey": false, 1746 + "notNull": true, 1747 + "default": 0 1748 + }, 1749 + "xata_createdat": { 1750 + "name": "xata_createdat", 1751 + "type": "timestamp", 1752 + "primaryKey": false, 1753 + "notNull": true, 1754 + "default": "now()" 1755 + }, 1756 + "xata_updatedat": { 1757 + "name": "xata_updatedat", 1758 + "type": "timestamp", 1759 + "primaryKey": false, 1760 + "notNull": true, 1761 + "default": "now()" 1762 + } 1763 + }, 1764 + "indexes": {}, 1765 + "foreignKeys": { 1766 + "queue_tracks_user_id_users_xata_id_fk": { 1767 + "name": "queue_tracks_user_id_users_xata_id_fk", 1768 + "tableFrom": "queue_tracks", 1769 + "tableTo": "users", 1770 + "columnsFrom": [ 1771 + "user_id" 1772 + ], 1773 + "columnsTo": [ 1774 + "xata_id" 1775 + ], 1776 + "onDelete": "no action", 1777 + "onUpdate": "no action" 1778 + }, 1779 + "queue_tracks_track_id_tracks_xata_id_fk": { 1780 + "name": "queue_tracks_track_id_tracks_xata_id_fk", 1781 + "tableFrom": "queue_tracks", 1782 + "tableTo": "tracks", 1783 + "columnsFrom": [ 1784 + "track_id" 1785 + ], 1786 + "columnsTo": [ 1787 + "xata_id" 1788 + ], 1789 + "onDelete": "no action", 1790 + "onUpdate": "no action" 1791 + } 1792 + }, 1793 + "compositePrimaryKeys": {}, 1794 + "uniqueConstraints": {}, 1795 + "policies": {}, 1796 + "checkConstraints": {}, 1797 + "isRLSEnabled": false 1798 + }, 1799 + "public.scrobbles": { 1800 + "name": "scrobbles", 1801 + "schema": "", 1802 + "columns": { 1803 + "xata_id": { 1804 + "name": "xata_id", 1805 + "type": "text", 1806 + "primaryKey": true, 1807 + "notNull": true, 1808 + "default": "xata_id()" 1809 + }, 1810 + "user_id": { 1811 + "name": "user_id", 1812 + "type": "text", 1813 + "primaryKey": false, 1814 + "notNull": false 1815 + }, 1816 + "track_id": { 1817 + "name": "track_id", 1818 + "type": "text", 1819 + "primaryKey": false, 1820 + "notNull": false 1821 + }, 1822 + "album_id": { 1823 + "name": "album_id", 1824 + "type": "text", 1825 + "primaryKey": false, 1826 + "notNull": false 1827 + }, 1828 + "artist_id": { 1829 + "name": "artist_id", 1830 + "type": "text", 1831 + "primaryKey": false, 1832 + "notNull": false 1833 + }, 1834 + "uri": { 1835 + "name": "uri", 1836 + "type": "text", 1837 + "primaryKey": false, 1838 + "notNull": false 1839 + }, 1840 + "xata_createdat": { 1841 + "name": "xata_createdat", 1842 + "type": "timestamp", 1843 + "primaryKey": false, 1844 + "notNull": true, 1845 + "default": "now()" 1846 + }, 1847 + "xata_updatedat": { 1848 + "name": "xata_updatedat", 1849 + "type": "timestamp", 1850 + "primaryKey": false, 1851 + "notNull": true, 1852 + "default": "now()" 1853 + }, 1854 + "xata_version": { 1855 + "name": "xata_version", 1856 + "type": "integer", 1857 + "primaryKey": false, 1858 + "notNull": false 1859 + }, 1860 + "timestamp": { 1861 + "name": "timestamp", 1862 + "type": "timestamp", 1863 + "primaryKey": false, 1864 + "notNull": true, 1865 + "default": "now()" 1866 + } 1867 + }, 1868 + "indexes": {}, 1869 + "foreignKeys": { 1870 + "scrobbles_user_id_users_xata_id_fk": { 1871 + "name": "scrobbles_user_id_users_xata_id_fk", 1872 + "tableFrom": "scrobbles", 1873 + "tableTo": "users", 1874 + "columnsFrom": [ 1875 + "user_id" 1876 + ], 1877 + "columnsTo": [ 1878 + "xata_id" 1879 + ], 1880 + "onDelete": "no action", 1881 + "onUpdate": "no action" 1882 + }, 1883 + "scrobbles_track_id_tracks_xata_id_fk": { 1884 + "name": "scrobbles_track_id_tracks_xata_id_fk", 1885 + "tableFrom": "scrobbles", 1886 + "tableTo": "tracks", 1887 + "columnsFrom": [ 1888 + "track_id" 1889 + ], 1890 + "columnsTo": [ 1891 + "xata_id" 1892 + ], 1893 + "onDelete": "no action", 1894 + "onUpdate": "no action" 1895 + }, 1896 + "scrobbles_album_id_albums_xata_id_fk": { 1897 + "name": "scrobbles_album_id_albums_xata_id_fk", 1898 + "tableFrom": "scrobbles", 1899 + "tableTo": "albums", 1900 + "columnsFrom": [ 1901 + "album_id" 1902 + ], 1903 + "columnsTo": [ 1904 + "xata_id" 1905 + ], 1906 + "onDelete": "no action", 1907 + "onUpdate": "no action" 1908 + }, 1909 + "scrobbles_artist_id_artists_xata_id_fk": { 1910 + "name": "scrobbles_artist_id_artists_xata_id_fk", 1911 + "tableFrom": "scrobbles", 1912 + "tableTo": "artists", 1913 + "columnsFrom": [ 1914 + "artist_id" 1915 + ], 1916 + "columnsTo": [ 1917 + "xata_id" 1918 + ], 1919 + "onDelete": "no action", 1920 + "onUpdate": "no action" 1921 + } 1922 + }, 1923 + "compositePrimaryKeys": {}, 1924 + "uniqueConstraints": { 1925 + "scrobbles_uri_unique": { 1926 + "name": "scrobbles_uri_unique", 1927 + "nullsNotDistinct": false, 1928 + "columns": [ 1929 + "uri" 1930 + ] 1931 + } 1932 + }, 1933 + "policies": {}, 1934 + "checkConstraints": {}, 1935 + "isRLSEnabled": false 1936 + }, 1937 + "public.shout_likes": { 1938 + "name": "shout_likes", 1939 + "schema": "", 1940 + "columns": { 1941 + "xata_id": { 1942 + "name": "xata_id", 1943 + "type": "text", 1944 + "primaryKey": true, 1945 + "notNull": true, 1946 + "default": "xata_id()" 1947 + }, 1948 + "user_id": { 1949 + "name": "user_id", 1950 + "type": "text", 1951 + "primaryKey": false, 1952 + "notNull": true 1953 + }, 1954 + "shout_id": { 1955 + "name": "shout_id", 1956 + "type": "text", 1957 + "primaryKey": false, 1958 + "notNull": true 1959 + }, 1960 + "xata_createdat": { 1961 + "name": "xata_createdat", 1962 + "type": "timestamp", 1963 + "primaryKey": false, 1964 + "notNull": true, 1965 + "default": "now()" 1966 + }, 1967 + "uri": { 1968 + "name": "uri", 1969 + "type": "text", 1970 + "primaryKey": false, 1971 + "notNull": true 1972 + } 1973 + }, 1974 + "indexes": {}, 1975 + "foreignKeys": { 1976 + "shout_likes_user_id_users_xata_id_fk": { 1977 + "name": "shout_likes_user_id_users_xata_id_fk", 1978 + "tableFrom": "shout_likes", 1979 + "tableTo": "users", 1980 + "columnsFrom": [ 1981 + "user_id" 1982 + ], 1983 + "columnsTo": [ 1984 + "xata_id" 1985 + ], 1986 + "onDelete": "no action", 1987 + "onUpdate": "no action" 1988 + }, 1989 + "shout_likes_shout_id_shouts_xata_id_fk": { 1990 + "name": "shout_likes_shout_id_shouts_xata_id_fk", 1991 + "tableFrom": "shout_likes", 1992 + "tableTo": "shouts", 1993 + "columnsFrom": [ 1994 + "shout_id" 1995 + ], 1996 + "columnsTo": [ 1997 + "xata_id" 1998 + ], 1999 + "onDelete": "no action", 2000 + "onUpdate": "no action" 2001 + } 2002 + }, 2003 + "compositePrimaryKeys": {}, 2004 + "uniqueConstraints": { 2005 + "shout_likes_uri_unique": { 2006 + "name": "shout_likes_uri_unique", 2007 + "nullsNotDistinct": false, 2008 + "columns": [ 2009 + "uri" 2010 + ] 2011 + } 2012 + }, 2013 + "policies": {}, 2014 + "checkConstraints": {}, 2015 + "isRLSEnabled": false 2016 + }, 2017 + "public.shout_reports": { 2018 + "name": "shout_reports", 2019 + "schema": "", 2020 + "columns": { 2021 + "xata_id": { 2022 + "name": "xata_id", 2023 + "type": "text", 2024 + "primaryKey": true, 2025 + "notNull": true, 2026 + "default": "xata_id()" 2027 + }, 2028 + "user_id": { 2029 + "name": "user_id", 2030 + "type": "text", 2031 + "primaryKey": false, 2032 + "notNull": true 2033 + }, 2034 + "shout_id": { 2035 + "name": "shout_id", 2036 + "type": "text", 2037 + "primaryKey": false, 2038 + "notNull": true 2039 + }, 2040 + "xata_createdat": { 2041 + "name": "xata_createdat", 2042 + "type": "timestamp", 2043 + "primaryKey": false, 2044 + "notNull": true, 2045 + "default": "now()" 2046 + } 2047 + }, 2048 + "indexes": {}, 2049 + "foreignKeys": { 2050 + "shout_reports_user_id_users_xata_id_fk": { 2051 + "name": "shout_reports_user_id_users_xata_id_fk", 2052 + "tableFrom": "shout_reports", 2053 + "tableTo": "users", 2054 + "columnsFrom": [ 2055 + "user_id" 2056 + ], 2057 + "columnsTo": [ 2058 + "xata_id" 2059 + ], 2060 + "onDelete": "no action", 2061 + "onUpdate": "no action" 2062 + }, 2063 + "shout_reports_shout_id_shouts_xata_id_fk": { 2064 + "name": "shout_reports_shout_id_shouts_xata_id_fk", 2065 + "tableFrom": "shout_reports", 2066 + "tableTo": "shouts", 2067 + "columnsFrom": [ 2068 + "shout_id" 2069 + ], 2070 + "columnsTo": [ 2071 + "xata_id" 2072 + ], 2073 + "onDelete": "no action", 2074 + "onUpdate": "no action" 2075 + } 2076 + }, 2077 + "compositePrimaryKeys": {}, 2078 + "uniqueConstraints": {}, 2079 + "policies": {}, 2080 + "checkConstraints": {}, 2081 + "isRLSEnabled": false 2082 + }, 2083 + "public.shouts": { 2084 + "name": "shouts", 2085 + "schema": "", 2086 + "columns": { 2087 + "xata_id": { 2088 + "name": "xata_id", 2089 + "type": "text", 2090 + "primaryKey": true, 2091 + "notNull": true, 2092 + "default": "xata_id()" 2093 + }, 2094 + "content": { 2095 + "name": "content", 2096 + "type": "text", 2097 + "primaryKey": false, 2098 + "notNull": true 2099 + }, 2100 + "track_id": { 2101 + "name": "track_id", 2102 + "type": "text", 2103 + "primaryKey": false, 2104 + "notNull": false 2105 + }, 2106 + "artist_id": { 2107 + "name": "artist_id", 2108 + "type": "text", 2109 + "primaryKey": false, 2110 + "notNull": false 2111 + }, 2112 + "album_id": { 2113 + "name": "album_id", 2114 + "type": "text", 2115 + "primaryKey": false, 2116 + "notNull": false 2117 + }, 2118 + "scrobble_id": { 2119 + "name": "scrobble_id", 2120 + "type": "text", 2121 + "primaryKey": false, 2122 + "notNull": false 2123 + }, 2124 + "uri": { 2125 + "name": "uri", 2126 + "type": "text", 2127 + "primaryKey": false, 2128 + "notNull": true 2129 + }, 2130 + "author_id": { 2131 + "name": "author_id", 2132 + "type": "text", 2133 + "primaryKey": false, 2134 + "notNull": true 2135 + }, 2136 + "parent_id": { 2137 + "name": "parent_id", 2138 + "type": "text", 2139 + "primaryKey": false, 2140 + "notNull": false 2141 + }, 2142 + "xata_createdat": { 2143 + "name": "xata_createdat", 2144 + "type": "timestamp", 2145 + "primaryKey": false, 2146 + "notNull": true, 2147 + "default": "now()" 2148 + }, 2149 + "xata_updatedat": { 2150 + "name": "xata_updatedat", 2151 + "type": "timestamp", 2152 + "primaryKey": false, 2153 + "notNull": true, 2154 + "default": "now()" 2155 + } 2156 + }, 2157 + "indexes": {}, 2158 + "foreignKeys": { 2159 + "shouts_track_id_tracks_xata_id_fk": { 2160 + "name": "shouts_track_id_tracks_xata_id_fk", 2161 + "tableFrom": "shouts", 2162 + "tableTo": "tracks", 2163 + "columnsFrom": [ 2164 + "track_id" 2165 + ], 2166 + "columnsTo": [ 2167 + "xata_id" 2168 + ], 2169 + "onDelete": "no action", 2170 + "onUpdate": "no action" 2171 + }, 2172 + "shouts_artist_id_users_xata_id_fk": { 2173 + "name": "shouts_artist_id_users_xata_id_fk", 2174 + "tableFrom": "shouts", 2175 + "tableTo": "users", 2176 + "columnsFrom": [ 2177 + "artist_id" 2178 + ], 2179 + "columnsTo": [ 2180 + "xata_id" 2181 + ], 2182 + "onDelete": "no action", 2183 + "onUpdate": "no action" 2184 + }, 2185 + "shouts_album_id_albums_xata_id_fk": { 2186 + "name": "shouts_album_id_albums_xata_id_fk", 2187 + "tableFrom": "shouts", 2188 + "tableTo": "albums", 2189 + "columnsFrom": [ 2190 + "album_id" 2191 + ], 2192 + "columnsTo": [ 2193 + "xata_id" 2194 + ], 2195 + "onDelete": "no action", 2196 + "onUpdate": "no action" 2197 + }, 2198 + "shouts_scrobble_id_scrobbles_xata_id_fk": { 2199 + "name": "shouts_scrobble_id_scrobbles_xata_id_fk", 2200 + "tableFrom": "shouts", 2201 + "tableTo": "scrobbles", 2202 + "columnsFrom": [ 2203 + "scrobble_id" 2204 + ], 2205 + "columnsTo": [ 2206 + "xata_id" 2207 + ], 2208 + "onDelete": "no action", 2209 + "onUpdate": "no action" 2210 + }, 2211 + "shouts_author_id_users_xata_id_fk": { 2212 + "name": "shouts_author_id_users_xata_id_fk", 2213 + "tableFrom": "shouts", 2214 + "tableTo": "users", 2215 + "columnsFrom": [ 2216 + "author_id" 2217 + ], 2218 + "columnsTo": [ 2219 + "xata_id" 2220 + ], 2221 + "onDelete": "no action", 2222 + "onUpdate": "no action" 2223 + }, 2224 + "shouts_parent_id_shouts_xata_id_fk": { 2225 + "name": "shouts_parent_id_shouts_xata_id_fk", 2226 + "tableFrom": "shouts", 2227 + "tableTo": "shouts", 2228 + "columnsFrom": [ 2229 + "parent_id" 2230 + ], 2231 + "columnsTo": [ 2232 + "xata_id" 2233 + ], 2234 + "onDelete": "no action", 2235 + "onUpdate": "no action" 2236 + } 2237 + }, 2238 + "compositePrimaryKeys": {}, 2239 + "uniqueConstraints": { 2240 + "shouts_uri_unique": { 2241 + "name": "shouts_uri_unique", 2242 + "nullsNotDistinct": false, 2243 + "columns": [ 2244 + "uri" 2245 + ] 2246 + } 2247 + }, 2248 + "policies": {}, 2249 + "checkConstraints": {}, 2250 + "isRLSEnabled": false 2251 + }, 2252 + "public.spotify_accounts": { 2253 + "name": "spotify_accounts", 2254 + "schema": "", 2255 + "columns": { 2256 + "xata_id": { 2257 + "name": "xata_id", 2258 + "type": "text", 2259 + "primaryKey": true, 2260 + "notNull": true, 2261 + "default": "xata_id()" 2262 + }, 2263 + "xata_version": { 2264 + "name": "xata_version", 2265 + "type": "integer", 2266 + "primaryKey": false, 2267 + "notNull": false 2268 + }, 2269 + "email": { 2270 + "name": "email", 2271 + "type": "text", 2272 + "primaryKey": false, 2273 + "notNull": true 2274 + }, 2275 + "user_id": { 2276 + "name": "user_id", 2277 + "type": "text", 2278 + "primaryKey": false, 2279 + "notNull": true 2280 + }, 2281 + "is_beta_user": { 2282 + "name": "is_beta_user", 2283 + "type": "boolean", 2284 + "primaryKey": false, 2285 + "notNull": true, 2286 + "default": false 2287 + }, 2288 + "spotify_app_id": { 2289 + "name": "spotify_app_id", 2290 + "type": "text", 2291 + "primaryKey": false, 2292 + "notNull": false 2293 + }, 2294 + "xata_createdat": { 2295 + "name": "xata_createdat", 2296 + "type": "timestamp", 2297 + "primaryKey": false, 2298 + "notNull": true, 2299 + "default": "now()" 2300 + }, 2301 + "xata_updatedat": { 2302 + "name": "xata_updatedat", 2303 + "type": "timestamp", 2304 + "primaryKey": false, 2305 + "notNull": true, 2306 + "default": "now()" 2307 + } 2308 + }, 2309 + "indexes": {}, 2310 + "foreignKeys": { 2311 + "spotify_accounts_user_id_users_xata_id_fk": { 2312 + "name": "spotify_accounts_user_id_users_xata_id_fk", 2313 + "tableFrom": "spotify_accounts", 2314 + "tableTo": "users", 2315 + "columnsFrom": [ 2316 + "user_id" 2317 + ], 2318 + "columnsTo": [ 2319 + "xata_id" 2320 + ], 2321 + "onDelete": "no action", 2322 + "onUpdate": "no action" 2323 + } 2324 + }, 2325 + "compositePrimaryKeys": {}, 2326 + "uniqueConstraints": {}, 2327 + "policies": {}, 2328 + "checkConstraints": {}, 2329 + "isRLSEnabled": false 2330 + }, 2331 + "public.spotify_apps": { 2332 + "name": "spotify_apps", 2333 + "schema": "", 2334 + "columns": { 2335 + "xata_id": { 2336 + "name": "xata_id", 2337 + "type": "text", 2338 + "primaryKey": true, 2339 + "notNull": true, 2340 + "default": "xata_id()" 2341 + }, 2342 + "xata_version": { 2343 + "name": "xata_version", 2344 + "type": "integer", 2345 + "primaryKey": false, 2346 + "notNull": false 2347 + }, 2348 + "spotify_app_id": { 2349 + "name": "spotify_app_id", 2350 + "type": "text", 2351 + "primaryKey": false, 2352 + "notNull": true 2353 + }, 2354 + "spotify_secret": { 2355 + "name": "spotify_secret", 2356 + "type": "text", 2357 + "primaryKey": false, 2358 + "notNull": true 2359 + }, 2360 + "xata_createdat": { 2361 + "name": "xata_createdat", 2362 + "type": "timestamp", 2363 + "primaryKey": false, 2364 + "notNull": true, 2365 + "default": "now()" 2366 + }, 2367 + "xata_updatedat": { 2368 + "name": "xata_updatedat", 2369 + "type": "timestamp", 2370 + "primaryKey": false, 2371 + "notNull": true, 2372 + "default": "now()" 2373 + } 2374 + }, 2375 + "indexes": {}, 2376 + "foreignKeys": {}, 2377 + "compositePrimaryKeys": {}, 2378 + "uniqueConstraints": { 2379 + "spotify_apps_spotify_app_id_unique": { 2380 + "name": "spotify_apps_spotify_app_id_unique", 2381 + "nullsNotDistinct": false, 2382 + "columns": [ 2383 + "spotify_app_id" 2384 + ] 2385 + } 2386 + }, 2387 + "policies": {}, 2388 + "checkConstraints": {}, 2389 + "isRLSEnabled": false 2390 + }, 2391 + "public.spotify_tokens": { 2392 + "name": "spotify_tokens", 2393 + "schema": "", 2394 + "columns": { 2395 + "xata_id": { 2396 + "name": "xata_id", 2397 + "type": "text", 2398 + "primaryKey": true, 2399 + "notNull": true, 2400 + "default": "xata_id()" 2401 + }, 2402 + "xata_version": { 2403 + "name": "xata_version", 2404 + "type": "integer", 2405 + "primaryKey": false, 2406 + "notNull": false 2407 + }, 2408 + "access_token": { 2409 + "name": "access_token", 2410 + "type": "text", 2411 + "primaryKey": false, 2412 + "notNull": true 2413 + }, 2414 + "refresh_token": { 2415 + "name": "refresh_token", 2416 + "type": "text", 2417 + "primaryKey": false, 2418 + "notNull": true 2419 + }, 2420 + "user_id": { 2421 + "name": "user_id", 2422 + "type": "text", 2423 + "primaryKey": false, 2424 + "notNull": true 2425 + }, 2426 + "spotify_app_id": { 2427 + "name": "spotify_app_id", 2428 + "type": "text", 2429 + "primaryKey": false, 2430 + "notNull": true 2431 + }, 2432 + "xata_createdat": { 2433 + "name": "xata_createdat", 2434 + "type": "timestamp", 2435 + "primaryKey": false, 2436 + "notNull": true, 2437 + "default": "now()" 2438 + }, 2439 + "xata_updatedat": { 2440 + "name": "xata_updatedat", 2441 + "type": "timestamp", 2442 + "primaryKey": false, 2443 + "notNull": true, 2444 + "default": "now()" 2445 + } 2446 + }, 2447 + "indexes": {}, 2448 + "foreignKeys": { 2449 + "spotify_tokens_user_id_users_xata_id_fk": { 2450 + "name": "spotify_tokens_user_id_users_xata_id_fk", 2451 + "tableFrom": "spotify_tokens", 2452 + "tableTo": "users", 2453 + "columnsFrom": [ 2454 + "user_id" 2455 + ], 2456 + "columnsTo": [ 2457 + "xata_id" 2458 + ], 2459 + "onDelete": "no action", 2460 + "onUpdate": "no action" 2461 + } 2462 + }, 2463 + "compositePrimaryKeys": {}, 2464 + "uniqueConstraints": {}, 2465 + "policies": {}, 2466 + "checkConstraints": {}, 2467 + "isRLSEnabled": false 2468 + }, 2469 + "public.tracks": { 2470 + "name": "tracks", 2471 + "schema": "", 2472 + "columns": { 2473 + "xata_id": { 2474 + "name": "xata_id", 2475 + "type": "text", 2476 + "primaryKey": true, 2477 + "notNull": true, 2478 + "default": "xata_id()" 2479 + }, 2480 + "title": { 2481 + "name": "title", 2482 + "type": "text", 2483 + "primaryKey": false, 2484 + "notNull": true 2485 + }, 2486 + "artist": { 2487 + "name": "artist", 2488 + "type": "text", 2489 + "primaryKey": false, 2490 + "notNull": true 2491 + }, 2492 + "album_artist": { 2493 + "name": "album_artist", 2494 + "type": "text", 2495 + "primaryKey": false, 2496 + "notNull": true 2497 + }, 2498 + "album_art": { 2499 + "name": "album_art", 2500 + "type": "text", 2501 + "primaryKey": false, 2502 + "notNull": false 2503 + }, 2504 + "album": { 2505 + "name": "album", 2506 + "type": "text", 2507 + "primaryKey": false, 2508 + "notNull": true 2509 + }, 2510 + "track_number": { 2511 + "name": "track_number", 2512 + "type": "integer", 2513 + "primaryKey": false, 2514 + "notNull": false 2515 + }, 2516 + "duration": { 2517 + "name": "duration", 2518 + "type": "integer", 2519 + "primaryKey": false, 2520 + "notNull": true 2521 + }, 2522 + "mb_id": { 2523 + "name": "mb_id", 2524 + "type": "text", 2525 + "primaryKey": false, 2526 + "notNull": false 2527 + }, 2528 + "youtube_link": { 2529 + "name": "youtube_link", 2530 + "type": "text", 2531 + "primaryKey": false, 2532 + "notNull": false 2533 + }, 2534 + "spotify_link": { 2535 + "name": "spotify_link", 2536 + "type": "text", 2537 + "primaryKey": false, 2538 + "notNull": false 2539 + }, 2540 + "apple_music_link": { 2541 + "name": "apple_music_link", 2542 + "type": "text", 2543 + "primaryKey": false, 2544 + "notNull": false 2545 + }, 2546 + "tidal_link": { 2547 + "name": "tidal_link", 2548 + "type": "text", 2549 + "primaryKey": false, 2550 + "notNull": false 2551 + }, 2552 + "sha256": { 2553 + "name": "sha256", 2554 + "type": "text", 2555 + "primaryKey": false, 2556 + "notNull": true 2557 + }, 2558 + "disc_number": { 2559 + "name": "disc_number", 2560 + "type": "integer", 2561 + "primaryKey": false, 2562 + "notNull": false 2563 + }, 2564 + "lyrics": { 2565 + "name": "lyrics", 2566 + "type": "text", 2567 + "primaryKey": false, 2568 + "notNull": false 2569 + }, 2570 + "composer": { 2571 + "name": "composer", 2572 + "type": "text", 2573 + "primaryKey": false, 2574 + "notNull": false 2575 + }, 2576 + "genre": { 2577 + "name": "genre", 2578 + "type": "text", 2579 + "primaryKey": false, 2580 + "notNull": false 2581 + }, 2582 + "label": { 2583 + "name": "label", 2584 + "type": "text", 2585 + "primaryKey": false, 2586 + "notNull": false 2587 + }, 2588 + "copyright_message": { 2589 + "name": "copyright_message", 2590 + "type": "text", 2591 + "primaryKey": false, 2592 + "notNull": false 2593 + }, 2594 + "uri": { 2595 + "name": "uri", 2596 + "type": "text", 2597 + "primaryKey": false, 2598 + "notNull": false 2599 + }, 2600 + "album_uri": { 2601 + "name": "album_uri", 2602 + "type": "text", 2603 + "primaryKey": false, 2604 + "notNull": false 2605 + }, 2606 + "artist_uri": { 2607 + "name": "artist_uri", 2608 + "type": "text", 2609 + "primaryKey": false, 2610 + "notNull": false 2611 + }, 2612 + "xata_createdat": { 2613 + "name": "xata_createdat", 2614 + "type": "timestamp", 2615 + "primaryKey": false, 2616 + "notNull": true, 2617 + "default": "now()" 2618 + }, 2619 + "xata_updatedat": { 2620 + "name": "xata_updatedat", 2621 + "type": "timestamp", 2622 + "primaryKey": false, 2623 + "notNull": true, 2624 + "default": "now()" 2625 + }, 2626 + "xata_version": { 2627 + "name": "xata_version", 2628 + "type": "integer", 2629 + "primaryKey": false, 2630 + "notNull": false 2631 + } 2632 + }, 2633 + "indexes": {}, 2634 + "foreignKeys": {}, 2635 + "compositePrimaryKeys": {}, 2636 + "uniqueConstraints": { 2637 + "tracks_mb_id_unique": { 2638 + "name": "tracks_mb_id_unique", 2639 + "nullsNotDistinct": false, 2640 + "columns": [ 2641 + "mb_id" 2642 + ] 2643 + }, 2644 + "tracks_youtube_link_unique": { 2645 + "name": "tracks_youtube_link_unique", 2646 + "nullsNotDistinct": false, 2647 + "columns": [ 2648 + "youtube_link" 2649 + ] 2650 + }, 2651 + "tracks_spotify_link_unique": { 2652 + "name": "tracks_spotify_link_unique", 2653 + "nullsNotDistinct": false, 2654 + "columns": [ 2655 + "spotify_link" 2656 + ] 2657 + }, 2658 + "tracks_apple_music_link_unique": { 2659 + "name": "tracks_apple_music_link_unique", 2660 + "nullsNotDistinct": false, 2661 + "columns": [ 2662 + "apple_music_link" 2663 + ] 2664 + }, 2665 + "tracks_tidal_link_unique": { 2666 + "name": "tracks_tidal_link_unique", 2667 + "nullsNotDistinct": false, 2668 + "columns": [ 2669 + "tidal_link" 2670 + ] 2671 + }, 2672 + "tracks_sha256_unique": { 2673 + "name": "tracks_sha256_unique", 2674 + "nullsNotDistinct": false, 2675 + "columns": [ 2676 + "sha256" 2677 + ] 2678 + }, 2679 + "tracks_uri_unique": { 2680 + "name": "tracks_uri_unique", 2681 + "nullsNotDistinct": false, 2682 + "columns": [ 2683 + "uri" 2684 + ] 2685 + } 2686 + }, 2687 + "policies": {}, 2688 + "checkConstraints": {}, 2689 + "isRLSEnabled": false 2690 + }, 2691 + "public.user_albums": { 2692 + "name": "user_albums", 2693 + "schema": "", 2694 + "columns": { 2695 + "xata_id": { 2696 + "name": "xata_id", 2697 + "type": "text", 2698 + "primaryKey": true, 2699 + "notNull": true, 2700 + "default": "xata_id()" 2701 + }, 2702 + "user_id": { 2703 + "name": "user_id", 2704 + "type": "text", 2705 + "primaryKey": false, 2706 + "notNull": true 2707 + }, 2708 + "album_id": { 2709 + "name": "album_id", 2710 + "type": "text", 2711 + "primaryKey": false, 2712 + "notNull": true 2713 + }, 2714 + "xata_createdat": { 2715 + "name": "xata_createdat", 2716 + "type": "timestamp", 2717 + "primaryKey": false, 2718 + "notNull": true, 2719 + "default": "now()" 2720 + }, 2721 + "xata_updatedat": { 2722 + "name": "xata_updatedat", 2723 + "type": "timestamp", 2724 + "primaryKey": false, 2725 + "notNull": true, 2726 + "default": "now()" 2727 + }, 2728 + "xata_version": { 2729 + "name": "xata_version", 2730 + "type": "integer", 2731 + "primaryKey": false, 2732 + "notNull": false 2733 + }, 2734 + "scrobbles": { 2735 + "name": "scrobbles", 2736 + "type": "integer", 2737 + "primaryKey": false, 2738 + "notNull": false 2739 + }, 2740 + "uri": { 2741 + "name": "uri", 2742 + "type": "text", 2743 + "primaryKey": false, 2744 + "notNull": true 2745 + } 2746 + }, 2747 + "indexes": {}, 2748 + "foreignKeys": { 2749 + "user_albums_user_id_users_xata_id_fk": { 2750 + "name": "user_albums_user_id_users_xata_id_fk", 2751 + "tableFrom": "user_albums", 2752 + "tableTo": "users", 2753 + "columnsFrom": [ 2754 + "user_id" 2755 + ], 2756 + "columnsTo": [ 2757 + "xata_id" 2758 + ], 2759 + "onDelete": "no action", 2760 + "onUpdate": "no action" 2761 + }, 2762 + "user_albums_album_id_albums_xata_id_fk": { 2763 + "name": "user_albums_album_id_albums_xata_id_fk", 2764 + "tableFrom": "user_albums", 2765 + "tableTo": "albums", 2766 + "columnsFrom": [ 2767 + "album_id" 2768 + ], 2769 + "columnsTo": [ 2770 + "xata_id" 2771 + ], 2772 + "onDelete": "no action", 2773 + "onUpdate": "no action" 2774 + } 2775 + }, 2776 + "compositePrimaryKeys": {}, 2777 + "uniqueConstraints": { 2778 + "user_albums_uri_unique": { 2779 + "name": "user_albums_uri_unique", 2780 + "nullsNotDistinct": false, 2781 + "columns": [ 2782 + "uri" 2783 + ] 2784 + } 2785 + }, 2786 + "policies": {}, 2787 + "checkConstraints": {}, 2788 + "isRLSEnabled": false 2789 + }, 2790 + "public.user_artists": { 2791 + "name": "user_artists", 2792 + "schema": "", 2793 + "columns": { 2794 + "xata_id": { 2795 + "name": "xata_id", 2796 + "type": "text", 2797 + "primaryKey": true, 2798 + "notNull": true, 2799 + "default": "xata_id()" 2800 + }, 2801 + "user_id": { 2802 + "name": "user_id", 2803 + "type": "text", 2804 + "primaryKey": false, 2805 + "notNull": true 2806 + }, 2807 + "artist_id": { 2808 + "name": "artist_id", 2809 + "type": "text", 2810 + "primaryKey": false, 2811 + "notNull": true 2812 + }, 2813 + "xata_createdat": { 2814 + "name": "xata_createdat", 2815 + "type": "timestamp", 2816 + "primaryKey": false, 2817 + "notNull": true, 2818 + "default": "now()" 2819 + }, 2820 + "xata_updatedat": { 2821 + "name": "xata_updatedat", 2822 + "type": "timestamp", 2823 + "primaryKey": false, 2824 + "notNull": true, 2825 + "default": "now()" 2826 + }, 2827 + "xata_version": { 2828 + "name": "xata_version", 2829 + "type": "integer", 2830 + "primaryKey": false, 2831 + "notNull": false 2832 + }, 2833 + "scrobbles": { 2834 + "name": "scrobbles", 2835 + "type": "integer", 2836 + "primaryKey": false, 2837 + "notNull": false 2838 + }, 2839 + "uri": { 2840 + "name": "uri", 2841 + "type": "text", 2842 + "primaryKey": false, 2843 + "notNull": true 2844 + } 2845 + }, 2846 + "indexes": {}, 2847 + "foreignKeys": { 2848 + "user_artists_user_id_users_xata_id_fk": { 2849 + "name": "user_artists_user_id_users_xata_id_fk", 2850 + "tableFrom": "user_artists", 2851 + "tableTo": "users", 2852 + "columnsFrom": [ 2853 + "user_id" 2854 + ], 2855 + "columnsTo": [ 2856 + "xata_id" 2857 + ], 2858 + "onDelete": "no action", 2859 + "onUpdate": "no action" 2860 + }, 2861 + "user_artists_artist_id_artists_xata_id_fk": { 2862 + "name": "user_artists_artist_id_artists_xata_id_fk", 2863 + "tableFrom": "user_artists", 2864 + "tableTo": "artists", 2865 + "columnsFrom": [ 2866 + "artist_id" 2867 + ], 2868 + "columnsTo": [ 2869 + "xata_id" 2870 + ], 2871 + "onDelete": "no action", 2872 + "onUpdate": "no action" 2873 + } 2874 + }, 2875 + "compositePrimaryKeys": {}, 2876 + "uniqueConstraints": { 2877 + "user_artists_uri_unique": { 2878 + "name": "user_artists_uri_unique", 2879 + "nullsNotDistinct": false, 2880 + "columns": [ 2881 + "uri" 2882 + ] 2883 + } 2884 + }, 2885 + "policies": {}, 2886 + "checkConstraints": {}, 2887 + "isRLSEnabled": false 2888 + }, 2889 + "public.user_playlists": { 2890 + "name": "user_playlists", 2891 + "schema": "", 2892 + "columns": { 2893 + "xata_id": { 2894 + "name": "xata_id", 2895 + "type": "text", 2896 + "primaryKey": true, 2897 + "notNull": true, 2898 + "default": "xata_id()" 2899 + }, 2900 + "user_id": { 2901 + "name": "user_id", 2902 + "type": "text", 2903 + "primaryKey": false, 2904 + "notNull": true 2905 + }, 2906 + "playlist_id": { 2907 + "name": "playlist_id", 2908 + "type": "text", 2909 + "primaryKey": false, 2910 + "notNull": true 2911 + }, 2912 + "xata_createdat": { 2913 + "name": "xata_createdat", 2914 + "type": "timestamp", 2915 + "primaryKey": false, 2916 + "notNull": true, 2917 + "default": "now()" 2918 + }, 2919 + "uri": { 2920 + "name": "uri", 2921 + "type": "text", 2922 + "primaryKey": false, 2923 + "notNull": false 2924 + } 2925 + }, 2926 + "indexes": {}, 2927 + "foreignKeys": { 2928 + "user_playlists_user_id_users_xata_id_fk": { 2929 + "name": "user_playlists_user_id_users_xata_id_fk", 2930 + "tableFrom": "user_playlists", 2931 + "tableTo": "users", 2932 + "columnsFrom": [ 2933 + "user_id" 2934 + ], 2935 + "columnsTo": [ 2936 + "xata_id" 2937 + ], 2938 + "onDelete": "no action", 2939 + "onUpdate": "no action" 2940 + }, 2941 + "user_playlists_playlist_id_playlists_xata_id_fk": { 2942 + "name": "user_playlists_playlist_id_playlists_xata_id_fk", 2943 + "tableFrom": "user_playlists", 2944 + "tableTo": "playlists", 2945 + "columnsFrom": [ 2946 + "playlist_id" 2947 + ], 2948 + "columnsTo": [ 2949 + "xata_id" 2950 + ], 2951 + "onDelete": "no action", 2952 + "onUpdate": "no action" 2953 + } 2954 + }, 2955 + "compositePrimaryKeys": {}, 2956 + "uniqueConstraints": { 2957 + "user_playlists_uri_unique": { 2958 + "name": "user_playlists_uri_unique", 2959 + "nullsNotDistinct": false, 2960 + "columns": [ 2961 + "uri" 2962 + ] 2963 + } 2964 + }, 2965 + "policies": {}, 2966 + "checkConstraints": {}, 2967 + "isRLSEnabled": false 2968 + }, 2969 + "public.user_tracks": { 2970 + "name": "user_tracks", 2971 + "schema": "", 2972 + "columns": { 2973 + "xata_id": { 2974 + "name": "xata_id", 2975 + "type": "text", 2976 + "primaryKey": true, 2977 + "notNull": true, 2978 + "default": "xata_id()" 2979 + }, 2980 + "user_id": { 2981 + "name": "user_id", 2982 + "type": "text", 2983 + "primaryKey": false, 2984 + "notNull": true 2985 + }, 2986 + "track_id": { 2987 + "name": "track_id", 2988 + "type": "text", 2989 + "primaryKey": false, 2990 + "notNull": true 2991 + }, 2992 + "xata_createdat": { 2993 + "name": "xata_createdat", 2994 + "type": "timestamp", 2995 + "primaryKey": false, 2996 + "notNull": true, 2997 + "default": "now()" 2998 + }, 2999 + "xata_updatedat": { 3000 + "name": "xata_updatedat", 3001 + "type": "timestamp", 3002 + "primaryKey": false, 3003 + "notNull": true, 3004 + "default": "now()" 3005 + }, 3006 + "xata_version": { 3007 + "name": "xata_version", 3008 + "type": "integer", 3009 + "primaryKey": false, 3010 + "notNull": false 3011 + }, 3012 + "uri": { 3013 + "name": "uri", 3014 + "type": "text", 3015 + "primaryKey": false, 3016 + "notNull": true 3017 + }, 3018 + "scrobbles": { 3019 + "name": "scrobbles", 3020 + "type": "integer", 3021 + "primaryKey": false, 3022 + "notNull": false 3023 + } 3024 + }, 3025 + "indexes": {}, 3026 + "foreignKeys": { 3027 + "user_tracks_user_id_users_xata_id_fk": { 3028 + "name": "user_tracks_user_id_users_xata_id_fk", 3029 + "tableFrom": "user_tracks", 3030 + "tableTo": "users", 3031 + "columnsFrom": [ 3032 + "user_id" 3033 + ], 3034 + "columnsTo": [ 3035 + "xata_id" 3036 + ], 3037 + "onDelete": "no action", 3038 + "onUpdate": "no action" 3039 + }, 3040 + "user_tracks_track_id_tracks_xata_id_fk": { 3041 + "name": "user_tracks_track_id_tracks_xata_id_fk", 3042 + "tableFrom": "user_tracks", 3043 + "tableTo": "tracks", 3044 + "columnsFrom": [ 3045 + "track_id" 3046 + ], 3047 + "columnsTo": [ 3048 + "xata_id" 3049 + ], 3050 + "onDelete": "no action", 3051 + "onUpdate": "no action" 3052 + } 3053 + }, 3054 + "compositePrimaryKeys": {}, 3055 + "uniqueConstraints": { 3056 + "user_tracks_uri_unique": { 3057 + "name": "user_tracks_uri_unique", 3058 + "nullsNotDistinct": false, 3059 + "columns": [ 3060 + "uri" 3061 + ] 3062 + } 3063 + }, 3064 + "policies": {}, 3065 + "checkConstraints": {}, 3066 + "isRLSEnabled": false 3067 + }, 3068 + "public.users": { 3069 + "name": "users", 3070 + "schema": "", 3071 + "columns": { 3072 + "xata_id": { 3073 + "name": "xata_id", 3074 + "type": "text", 3075 + "primaryKey": true, 3076 + "notNull": true, 3077 + "default": "xata_id()" 3078 + }, 3079 + "did": { 3080 + "name": "did", 3081 + "type": "text", 3082 + "primaryKey": false, 3083 + "notNull": true 3084 + }, 3085 + "display_name": { 3086 + "name": "display_name", 3087 + "type": "text", 3088 + "primaryKey": false, 3089 + "notNull": false 3090 + }, 3091 + "handle": { 3092 + "name": "handle", 3093 + "type": "text", 3094 + "primaryKey": false, 3095 + "notNull": true 3096 + }, 3097 + "avatar": { 3098 + "name": "avatar", 3099 + "type": "text", 3100 + "primaryKey": false, 3101 + "notNull": true 3102 + }, 3103 + "xata_createdat": { 3104 + "name": "xata_createdat", 3105 + "type": "timestamp", 3106 + "primaryKey": false, 3107 + "notNull": true, 3108 + "default": "now()" 3109 + }, 3110 + "xata_updatedat": { 3111 + "name": "xata_updatedat", 3112 + "type": "timestamp", 3113 + "primaryKey": false, 3114 + "notNull": true, 3115 + "default": "now()" 3116 + }, 3117 + "xata_version": { 3118 + "name": "xata_version", 3119 + "type": "integer", 3120 + "primaryKey": false, 3121 + "notNull": false 3122 + } 3123 + }, 3124 + "indexes": {}, 3125 + "foreignKeys": {}, 3126 + "compositePrimaryKeys": {}, 3127 + "uniqueConstraints": { 3128 + "users_did_unique": { 3129 + "name": "users_did_unique", 3130 + "nullsNotDistinct": false, 3131 + "columns": [ 3132 + "did" 3133 + ] 3134 + }, 3135 + "users_handle_unique": { 3136 + "name": "users_handle_unique", 3137 + "nullsNotDistinct": false, 3138 + "columns": [ 3139 + "handle" 3140 + ] 3141 + } 3142 + }, 3143 + "policies": {}, 3144 + "checkConstraints": {}, 3145 + "isRLSEnabled": false 3146 + }, 3147 + "public.webscrobblers": { 3148 + "name": "webscrobblers", 3149 + "schema": "", 3150 + "columns": { 3151 + "xata_id": { 3152 + "name": "xata_id", 3153 + "type": "text", 3154 + "primaryKey": true, 3155 + "notNull": true, 3156 + "default": "xata_id()" 3157 + }, 3158 + "name": { 3159 + "name": "name", 3160 + "type": "text", 3161 + "primaryKey": false, 3162 + "notNull": true 3163 + }, 3164 + "uuid": { 3165 + "name": "uuid", 3166 + "type": "text", 3167 + "primaryKey": false, 3168 + "notNull": true 3169 + }, 3170 + "description": { 3171 + "name": "description", 3172 + "type": "text", 3173 + "primaryKey": false, 3174 + "notNull": false 3175 + }, 3176 + "enabled": { 3177 + "name": "enabled", 3178 + "type": "boolean", 3179 + "primaryKey": false, 3180 + "notNull": true, 3181 + "default": true 3182 + }, 3183 + "user_id": { 3184 + "name": "user_id", 3185 + "type": "text", 3186 + "primaryKey": false, 3187 + "notNull": true 3188 + }, 3189 + "xata_createdat": { 3190 + "name": "xata_createdat", 3191 + "type": "timestamp", 3192 + "primaryKey": false, 3193 + "notNull": true, 3194 + "default": "now()" 3195 + }, 3196 + "xata_updatedat": { 3197 + "name": "xata_updatedat", 3198 + "type": "timestamp", 3199 + "primaryKey": false, 3200 + "notNull": true, 3201 + "default": "now()" 3202 + } 3203 + }, 3204 + "indexes": {}, 3205 + "foreignKeys": { 3206 + "webscrobblers_user_id_users_xata_id_fk": { 3207 + "name": "webscrobblers_user_id_users_xata_id_fk", 3208 + "tableFrom": "webscrobblers", 3209 + "tableTo": "users", 3210 + "columnsFrom": [ 3211 + "user_id" 3212 + ], 3213 + "columnsTo": [ 3214 + "xata_id" 3215 + ], 3216 + "onDelete": "no action", 3217 + "onUpdate": "no action" 3218 + } 3219 + }, 3220 + "compositePrimaryKeys": {}, 3221 + "uniqueConstraints": {}, 3222 + "policies": {}, 3223 + "checkConstraints": {}, 3224 + "isRLSEnabled": false 3225 + } 3226 + }, 3227 + "enums": {}, 3228 + "schemas": {}, 3229 + "sequences": {}, 3230 + "roles": {}, 3231 + "policies": {}, 3232 + "views": {}, 3233 + "_meta": { 3234 + "columns": {}, 3235 + "schemas": {}, 3236 + "tables": {} 3237 + } 3238 + }
+7
apps/api/drizzle/meta/_journal.json
··· 43 43 "when": 1761625200550, 44 44 "tag": "0005_same_hydra", 45 45 "breakpoints": true 46 + }, 47 + { 48 + "idx": 6, 49 + "version": "7", 50 + "when": 1761704981354, 51 + "tag": "0006_slow_bulldozer", 52 + "breakpoints": true 46 53 } 47 54 ] 48 55 }
+1 -1
apps/api/src/schema/spotify-apps.ts
··· 6 6 .primaryKey() 7 7 .default(sql`xata_id()`), 8 8 xataVersion: integer("xata_version"), 9 - spotifyAppId: text("spotify_app_id").notNull(), 9 + spotifyAppId: text("spotify_app_id").unique().notNull(), 10 10 spotifySecret: text("spotify_secret").notNull(), 11 11 createdAt: timestamp("xata_createdat").defaultNow().notNull(), 12 12 updatedAt: timestamp("xata_updatedat").defaultNow().notNull(),