Trading card city builder game?

additional tests for pull banner

eldridge.cam 2655f636 6c0e696d

verified
+407 -194
+1
.github/workflows/rust.yml
··· 54 54 run: | 55 55 cargo fmt -- --check 56 56 sqlx-fmt check 57 + sqruff lint 57 58 build: 58 59 name: build 59 60 runs-on: ubuntu-latest
-22
.sqlx/query-a9b6f5683c626b4c84579e5df711576729a49894833ef10fe016cea566deef9a.json
··· 1 - { 2 - "db_name": "PostgreSQL", 3 - "query": "SELECT pack_size FROM pack_banners WHERE id = $1", 4 - "describe": { 5 - "columns": [ 6 - { 7 - "ordinal": 0, 8 - "name": "pack_size", 9 - "type_info": "Int4" 10 - } 11 - ], 12 - "parameters": { 13 - "Left": [ 14 - "Text" 15 - ] 16 - }, 17 - "nullable": [ 18 - false 19 - ] 20 - }, 21 - "hash": "a9b6f5683c626b4c84579e5df711576729a49894833ef10fe016cea566deef9a" 22 - }
+22
.sqlx/query-adb01276963ff570fec52385b1a725f0dc439039ee2af93a9327713870fcb5e7.json
··· 1 + { 2 + "db_name": "PostgreSQL", 3 + "query": "\n SELECT pack_size\n FROM pack_banners\n WHERE id = $1 AND start_date <= now() AND (end_date IS NULL OR end_date > now())\n ", 4 + "describe": { 5 + "columns": [ 6 + { 7 + "ordinal": 0, 8 + "name": "pack_size", 9 + "type_info": "Int4" 10 + } 11 + ], 12 + "parameters": { 13 + "Left": [ 14 + "Text" 15 + ] 16 + }, 17 + "nullable": [ 18 + false 19 + ] 20 + }, 21 + "hash": "adb01276963ff570fec52385b1a725f0dc439039ee2af93a9327713870fcb5e7" 22 + }
+2
.sqruffignore
··· 1 + generated/schema.sql 2 + migrations/committed
+4 -3
Justfile
··· 65 65 66 66 [group: "dev"] 67 67 generate: 68 - cargo sqlx prepare --workspace 68 + cargo sqlx prepare --workspace -- --all-targets --all-features 69 69 cargo run -- --openapi > openapi.json 70 70 cd app && npx orval 71 71 cd app && npx svelte-kit sync ··· 73 73 [group: "dev"] 74 74 fmt: && generate 75 75 RUST_LOG=off sqlx-fmt format 76 + RUST_LOG=off sqruff fix packages 76 77 cargo fmt 77 78 cd app && npx prettier --write . 78 79 79 80 [group: "dev"] 80 - test: up 81 + test: up generate 81 82 SQLX_OFFLINE=true DATABASE_URL={{ROOT_DATABASE_URL}} cargo test 82 83 cd app && npm test 83 84 ··· 91 92 92 93 [group: "database"] 93 94 migration message: 94 - npx prettier migrations -w 95 + sqruff fix migrations/current.sql 95 96 npx graphile-migrate commit -m {{message}} 96 97 97 98 [group: "database"]
+186 -75
generated/schema.sql
··· 67 67 68 68 CREATE TABLE public.accounts ( 69 69 id public.citext NOT NULL, 70 - CONSTRAINT accounts_id_check CHECK (((0 < length((id)::text)) AND (length((id)::text) <= 64))) 70 + CONSTRAINT accounts_id_check CHECK ( 71 + ((0 < length((id)::text)) AND (length((id)::text) <= 64)) 72 + ) 71 73 ); 72 74 73 75 ··· 102 104 CREATE TABLE public.card_sets ( 103 105 id text NOT NULL, 104 106 release_date timestamp with time zone NOT NULL, 105 - CONSTRAINT card_sets_id_check CHECK (((0 < length(id)) AND (length(id) <= 64))) 107 + CONSTRAINT card_sets_id_check CHECK ( 108 + ((0 < length(id)) AND (length(id) <= 64)) 109 + ) 106 110 ); 107 111 108 112 ··· 121 125 id text NOT NULL, 122 126 card_set_id text DEFAULT 'default'::text NOT NULL, 123 127 class public.card_class NOT NULL, 124 - CONSTRAINT card_types_id_check CHECK (((0 < length(id)) AND (length(id) <= 64))) 128 + CONSTRAINT card_types_id_check CHECK ( 129 + ((0 < length(id)) AND (length(id) <= 64)) 130 + ) 125 131 ); 126 132 127 133 ··· 172 178 name text NOT NULL, 173 179 id bigint NOT NULL, 174 180 home_tile_id bigint, 175 - CONSTRAINT citizens_name_check CHECK (((0 < length(name)) AND (length(name) < 64))) 181 + CONSTRAINT citizens_name_check CHECK ( 182 + ((0 < length(name)) AND (length(name) < 64)) 183 + ) 176 184 ); 177 185 178 186 ··· 231 239 id bigint NOT NULL, 232 240 name text NOT NULL, 233 241 account_id public.citext NOT NULL, 234 - CONSTRAINT fields_name_check CHECK (((0 < length(name)) AND (length(name) <= 64))) 242 + CONSTRAINT fields_name_check CHECK ( 243 + ((0 < length(name)) AND (length(name) <= 64)) 244 + ) 235 245 ); 236 246 237 247 ··· 284 294 start_date timestamp with time zone NOT NULL, 285 295 end_date timestamp with time zone, 286 296 pack_size integer DEFAULT 5 NOT NULL, 287 - CONSTRAINT pack_banners_id_check CHECK (((0 < length(id)) AND (length(id) <= 64))) 297 + CONSTRAINT pack_banners_id_check CHECK ( 298 + ((0 < length(id)) AND (length(id) <= 64)) 299 + ) 288 300 ); 289 301 290 302 ··· 368 380 369 381 CREATE TABLE public.resources ( 370 382 id text NOT NULL, 371 - CONSTRAINT resources_id_check CHECK (((0 < length(id)) AND (length(id) <= 64))) 383 + CONSTRAINT resources_id_check CHECK ( 384 + ((0 < length(id)) AND (length(id) <= 64)) 385 + ) 372 386 ); 373 387 374 388 ··· 385 399 386 400 CREATE TABLE public.species ( 387 401 id text NOT NULL, 388 - class public.card_class GENERATED ALWAYS AS ('citizen'::public.card_class) STORED NOT NULL, 389 - CONSTRAINT species_id_check CHECK (((0 < length(id)) AND (length(id) <= 64))) 402 + class public.card_class GENERATED ALWAYS AS ( 403 + 'citizen'::public.card_class 404 + ) STORED NOT NULL, 405 + CONSTRAINT species_id_check CHECK ( 406 + ((0 < length(id)) AND (length(id) <= 64)) 407 + ) 390 408 ); 391 409 392 410 ··· 460 478 461 479 CREATE TABLE public.tile_types ( 462 480 id text NOT NULL, 463 - class public.card_class GENERATED ALWAYS AS ('tile'::public.card_class) STORED NOT NULL, 481 + class public.card_class GENERATED ALWAYS AS ( 482 + 'tile'::public.card_class 483 + ) STORED NOT NULL, 464 484 category public.tile_category NOT NULL, 465 485 houses integer NOT NULL, 466 486 employs integer NOT NULL ··· 482 502 id bigint NOT NULL, 483 503 tile_type_id text NOT NULL, 484 504 name text NOT NULL, 485 - CONSTRAINT tiles_name_check CHECK (((0 < length(name)) AND (length(name) <= 64))) 505 + CONSTRAINT tiles_name_check CHECK ( 506 + ((0 < length(name)) AND (length(name) <= 64)) 507 + ) 486 508 ); 487 509 488 510 ··· 498 520 -- 499 521 500 522 ALTER TABLE ONLY public.accounts 501 - ADD CONSTRAINT accounts_pkey PRIMARY KEY (id); 523 + ADD CONSTRAINT accounts_pkey PRIMARY KEY (id); 502 524 503 525 504 526 -- ··· 506 528 -- 507 529 508 530 ALTER TABLE ONLY public.card_accounts 509 - ADD CONSTRAINT card_accounts_card_id_account_id_key UNIQUE (card_id, account_id); 531 + ADD CONSTRAINT card_accounts_card_id_account_id_key UNIQUE ( 532 + card_id, account_id 533 + ); 510 534 511 535 512 536 -- ··· 514 538 -- 515 539 516 540 ALTER TABLE ONLY public.card_accounts 517 - ADD CONSTRAINT card_accounts_pkey PRIMARY KEY (card_id); 541 + ADD CONSTRAINT card_accounts_pkey PRIMARY KEY (card_id); 518 542 519 543 520 544 -- ··· 522 546 -- 523 547 524 548 ALTER TABLE ONLY public.card_sets 525 - ADD CONSTRAINT card_sets_pkey PRIMARY KEY (id); 549 + ADD CONSTRAINT card_sets_pkey PRIMARY KEY (id); 526 550 527 551 528 552 -- ··· 530 554 -- 531 555 532 556 ALTER TABLE ONLY public.card_types 533 - ADD CONSTRAINT card_types_id_class_key UNIQUE (id, class); 557 + ADD CONSTRAINT card_types_id_class_key UNIQUE (id, class); 534 558 535 559 536 560 -- ··· 538 562 -- 539 563 540 564 ALTER TABLE ONLY public.card_types 541 - ADD CONSTRAINT card_types_pkey PRIMARY KEY (id); 565 + ADD CONSTRAINT card_types_pkey PRIMARY KEY (id); 542 566 543 567 544 568 -- ··· 546 570 -- 547 571 548 572 ALTER TABLE ONLY public.cards 549 - ADD CONSTRAINT cards_id_card_type_id_key UNIQUE (id, card_type_id); 573 + ADD CONSTRAINT cards_id_card_type_id_key UNIQUE (id, card_type_id); 550 574 551 575 552 576 -- ··· 554 578 -- 555 579 556 580 ALTER TABLE ONLY public.cards 557 - ADD CONSTRAINT cards_pkey PRIMARY KEY (id); 581 + ADD CONSTRAINT cards_pkey PRIMARY KEY (id); 558 582 559 583 560 584 -- ··· 562 586 -- 563 587 564 588 ALTER TABLE ONLY public.citizens 565 - ADD CONSTRAINT citizens_pkey PRIMARY KEY (id); 589 + ADD CONSTRAINT citizens_pkey PRIMARY KEY (id); 566 590 567 591 568 592 -- ··· 570 594 -- 571 595 572 596 ALTER TABLE ONLY public.field_citizens 573 - ADD CONSTRAINT field_citizens_pkey PRIMARY KEY (citizen_id); 597 + ADD CONSTRAINT field_citizens_pkey PRIMARY KEY (citizen_id); 574 598 575 599 576 600 -- ··· 578 602 -- 579 603 580 604 ALTER TABLE ONLY public.field_tiles 581 - ADD CONSTRAINT field_tiles_pkey PRIMARY KEY (tile_id); 605 + ADD CONSTRAINT field_tiles_pkey PRIMARY KEY (tile_id); 582 606 583 607 584 608 -- ··· 586 610 -- 587 611 588 612 ALTER TABLE ONLY public.fields 589 - ADD CONSTRAINT fields_id_account_id_key UNIQUE (id, account_id); 613 + ADD CONSTRAINT fields_id_account_id_key UNIQUE (id, account_id); 590 614 591 615 592 616 -- ··· 594 618 -- 595 619 596 620 ALTER TABLE ONLY public.fields 597 - ADD CONSTRAINT fields_pkey PRIMARY KEY (id); 621 + ADD CONSTRAINT fields_pkey PRIMARY KEY (id); 598 622 599 623 600 624 -- ··· 602 626 -- 603 627 604 628 ALTER TABLE ONLY public.pack_banner_cards 605 - ADD CONSTRAINT pack_banner_cards_pkey PRIMARY KEY (pack_banner_id, card_type_id); 629 + ADD CONSTRAINT pack_banner_cards_pkey PRIMARY KEY ( 630 + pack_banner_id, card_type_id 631 + ); 606 632 607 633 608 634 -- ··· 610 636 -- 611 637 612 638 ALTER TABLE ONLY public.pack_banners 613 - ADD CONSTRAINT pack_banners_pkey PRIMARY KEY (id); 639 + ADD CONSTRAINT pack_banners_pkey PRIMARY KEY (id); 614 640 615 641 616 642 -- ··· 618 644 -- 619 645 620 646 ALTER TABLE ONLY public.pack_contents 621 - ADD CONSTRAINT pack_contents_pkey PRIMARY KEY (pack_id, "position"); 647 + ADD CONSTRAINT pack_contents_pkey PRIMARY KEY (pack_id, "position"); 622 648 623 649 624 650 -- ··· 626 652 -- 627 653 628 654 ALTER TABLE ONLY public.packs 629 - ADD CONSTRAINT packs_pkey PRIMARY KEY (id); 655 + ADD CONSTRAINT packs_pkey PRIMARY KEY (id); 630 656 631 657 632 658 -- ··· 634 660 -- 635 661 636 662 ALTER TABLE ONLY public.resources 637 - ADD CONSTRAINT resources_pkey PRIMARY KEY (id); 663 + ADD CONSTRAINT resources_pkey PRIMARY KEY (id); 638 664 639 665 640 666 -- ··· 642 668 -- 643 669 644 670 ALTER TABLE ONLY public.species_needs 645 - ADD CONSTRAINT species_needs_pkey PRIMARY KEY (species_id, resource_id); 671 + ADD CONSTRAINT species_needs_pkey PRIMARY KEY (species_id, resource_id); 646 672 647 673 648 674 -- ··· 650 676 -- 651 677 652 678 ALTER TABLE ONLY public.species 653 - ADD CONSTRAINT species_pkey PRIMARY KEY (id); 679 + ADD CONSTRAINT species_pkey PRIMARY KEY (id); 654 680 655 681 656 682 -- ··· 658 684 -- 659 685 660 686 ALTER TABLE ONLY public.tile_type_consumes 661 - ADD CONSTRAINT tile_type_consumes_pkey PRIMARY KEY (tile_type_id, resource_id); 687 + ADD CONSTRAINT tile_type_consumes_pkey PRIMARY KEY (tile_type_id, resource_id); 662 688 663 689 664 690 -- ··· 666 692 -- 667 693 668 694 ALTER TABLE ONLY public.tile_type_produces 669 - ADD CONSTRAINT tile_type_produces_pkey PRIMARY KEY (tile_type_id, resource_id); 695 + ADD CONSTRAINT tile_type_produces_pkey PRIMARY KEY (tile_type_id, resource_id); 670 696 671 697 672 698 -- ··· 674 700 -- 675 701 676 702 ALTER TABLE ONLY public.tile_types 677 - ADD CONSTRAINT tile_types_pkey PRIMARY KEY (id); 703 + ADD CONSTRAINT tile_types_pkey PRIMARY KEY (id); 678 704 679 705 680 706 -- ··· 682 708 -- 683 709 684 710 ALTER TABLE ONLY public.tiles 685 - ADD CONSTRAINT tiles_pkey PRIMARY KEY (id); 711 + ADD CONSTRAINT tiles_pkey PRIMARY KEY (id); 686 712 687 713 688 714 -- 689 715 -- Name: card_accounts_account_id_index; Type: INDEX; Schema: public; Owner: - 690 716 -- 691 717 692 - CREATE INDEX card_accounts_account_id_index ON public.card_accounts USING btree (account_id); 718 + CREATE INDEX card_accounts_account_id_index ON public.card_accounts USING btree ( 719 + account_id 720 + ); 693 721 694 722 695 723 -- ··· 697 725 -- 698 726 699 727 ALTER TABLE ONLY public.card_accounts 700 - ADD CONSTRAINT card_accounts_account_id_fkey FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON UPDATE CASCADE ON DELETE CASCADE; 728 + ADD CONSTRAINT card_accounts_account_id_fkey FOREIGN KEY ( 729 + account_id 730 + ) REFERENCES public.accounts (id) ON UPDATE CASCADE ON DELETE CASCADE; 701 731 702 732 703 733 -- ··· 705 735 -- 706 736 707 737 ALTER TABLE ONLY public.card_accounts 708 - ADD CONSTRAINT card_accounts_card_id_fkey FOREIGN KEY (card_id) REFERENCES public.cards(id) ON UPDATE CASCADE ON DELETE CASCADE; 738 + ADD CONSTRAINT card_accounts_card_id_fkey FOREIGN KEY ( 739 + card_id 740 + ) REFERENCES public.cards (id) ON UPDATE CASCADE ON DELETE CASCADE; 709 741 710 742 711 743 -- ··· 713 745 -- 714 746 715 747 ALTER TABLE ONLY public.card_types 716 - ADD CONSTRAINT card_types_card_set_id_fkey FOREIGN KEY (card_set_id) REFERENCES public.card_sets(id) ON UPDATE CASCADE ON DELETE RESTRICT; 748 + ADD CONSTRAINT card_types_card_set_id_fkey FOREIGN KEY ( 749 + card_set_id 750 + ) REFERENCES public.card_sets (id) ON UPDATE CASCADE ON DELETE RESTRICT; 717 751 718 752 719 753 -- ··· 721 755 -- 722 756 723 757 ALTER TABLE ONLY public.cards 724 - ADD CONSTRAINT cards_card_type_id_fkey FOREIGN KEY (card_type_id) REFERENCES public.card_types(id) ON UPDATE CASCADE ON DELETE RESTRICT; 758 + ADD CONSTRAINT cards_card_type_id_fkey FOREIGN KEY ( 759 + card_type_id 760 + ) REFERENCES public.card_types (id) ON UPDATE CASCADE ON DELETE RESTRICT; 725 761 726 762 727 763 -- ··· 729 765 -- 730 766 731 767 ALTER TABLE ONLY public.citizens 732 - ADD CONSTRAINT citizens_home_tile_id_fkey FOREIGN KEY (home_tile_id) REFERENCES public.tiles(id) ON UPDATE CASCADE ON DELETE SET NULL; 768 + ADD CONSTRAINT citizens_home_tile_id_fkey FOREIGN KEY ( 769 + home_tile_id 770 + ) REFERENCES public.tiles (id) ON UPDATE CASCADE ON DELETE SET NULL; 733 771 734 772 735 773 -- ··· 737 775 -- 738 776 739 777 ALTER TABLE ONLY public.citizens 740 - ADD CONSTRAINT citizens_id_fkey FOREIGN KEY (id) REFERENCES public.cards(id) ON UPDATE CASCADE ON DELETE CASCADE; 778 + ADD CONSTRAINT citizens_id_fkey FOREIGN KEY (id) REFERENCES public.cards ( 779 + id 780 + ) ON UPDATE CASCADE ON DELETE CASCADE; 741 781 742 782 743 783 -- ··· 745 785 -- 746 786 747 787 ALTER TABLE ONLY public.citizens 748 - ADD CONSTRAINT citizens_id_species_id_fkey FOREIGN KEY (id, species_id) REFERENCES public.cards(id, card_type_id) ON UPDATE CASCADE ON DELETE CASCADE; 788 + ADD CONSTRAINT citizens_id_species_id_fkey FOREIGN KEY ( 789 + id, species_id 790 + ) REFERENCES public.cards ( 791 + id, card_type_id 792 + ) ON UPDATE CASCADE ON DELETE CASCADE; 749 793 750 794 751 795 -- ··· 753 797 -- 754 798 755 799 ALTER TABLE ONLY public.citizens 756 - ADD CONSTRAINT citizens_species_id_fkey FOREIGN KEY (species_id) REFERENCES public.species(id) ON UPDATE CASCADE ON DELETE CASCADE; 800 + ADD CONSTRAINT citizens_species_id_fkey FOREIGN KEY ( 801 + species_id 802 + ) REFERENCES public.species (id) ON UPDATE CASCADE ON DELETE CASCADE; 757 803 758 804 759 805 -- ··· 761 807 -- 762 808 763 809 ALTER TABLE ONLY public.field_citizens 764 - ADD CONSTRAINT field_citizens_account_id_citizen_id_fkey FOREIGN KEY (account_id, citizen_id) REFERENCES public.card_accounts(account_id, card_id) ON UPDATE CASCADE ON DELETE CASCADE; 810 + ADD CONSTRAINT field_citizens_account_id_citizen_id_fkey FOREIGN KEY ( 811 + account_id, citizen_id 812 + ) REFERENCES public.card_accounts ( 813 + account_id, card_id 814 + ) ON UPDATE CASCADE ON DELETE CASCADE; 765 815 766 816 767 817 -- ··· 769 819 -- 770 820 771 821 ALTER TABLE ONLY public.field_citizens 772 - ADD CONSTRAINT field_citizens_account_id_field_id_fkey FOREIGN KEY (account_id, field_id) REFERENCES public.fields(account_id, id) ON UPDATE CASCADE ON DELETE CASCADE; 822 + ADD CONSTRAINT field_citizens_account_id_field_id_fkey FOREIGN KEY ( 823 + account_id, field_id 824 + ) REFERENCES public.fields (account_id, id) ON UPDATE CASCADE ON DELETE CASCADE; 773 825 774 826 775 827 -- ··· 777 829 -- 778 830 779 831 ALTER TABLE ONLY public.field_citizens 780 - ADD CONSTRAINT field_citizens_account_id_fkey FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON UPDATE CASCADE ON DELETE CASCADE; 832 + ADD CONSTRAINT field_citizens_account_id_fkey FOREIGN KEY ( 833 + account_id 834 + ) REFERENCES public.accounts (id) ON UPDATE CASCADE ON DELETE CASCADE; 781 835 782 836 783 837 -- ··· 785 839 -- 786 840 787 841 ALTER TABLE ONLY public.field_citizens 788 - ADD CONSTRAINT field_citizens_citizen_id_fkey FOREIGN KEY (citizen_id) REFERENCES public.citizens(id) ON UPDATE CASCADE ON DELETE CASCADE; 842 + ADD CONSTRAINT field_citizens_citizen_id_fkey FOREIGN KEY ( 843 + citizen_id 844 + ) REFERENCES public.citizens (id) ON UPDATE CASCADE ON DELETE CASCADE; 789 845 790 846 791 847 -- ··· 793 849 -- 794 850 795 851 ALTER TABLE ONLY public.field_citizens 796 - ADD CONSTRAINT field_citizens_field_id_fkey FOREIGN KEY (field_id) REFERENCES public.fields(id) ON UPDATE CASCADE ON DELETE CASCADE; 852 + ADD CONSTRAINT field_citizens_field_id_fkey FOREIGN KEY ( 853 + field_id 854 + ) REFERENCES public.fields (id) ON UPDATE CASCADE ON DELETE CASCADE; 797 855 798 856 799 857 -- ··· 801 859 -- 802 860 803 861 ALTER TABLE ONLY public.field_tiles 804 - ADD CONSTRAINT field_tiles_account_id_field_id_fkey FOREIGN KEY (account_id, field_id) REFERENCES public.fields(account_id, id) ON UPDATE CASCADE ON DELETE CASCADE; 862 + ADD CONSTRAINT field_tiles_account_id_field_id_fkey FOREIGN KEY ( 863 + account_id, field_id 864 + ) REFERENCES public.fields (account_id, id) ON UPDATE CASCADE ON DELETE CASCADE; 805 865 806 866 807 867 -- ··· 809 869 -- 810 870 811 871 ALTER TABLE ONLY public.field_tiles 812 - ADD CONSTRAINT field_tiles_account_id_fkey FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON UPDATE CASCADE ON DELETE CASCADE; 872 + ADD CONSTRAINT field_tiles_account_id_fkey FOREIGN KEY ( 873 + account_id 874 + ) REFERENCES public.accounts (id) ON UPDATE CASCADE ON DELETE CASCADE; 813 875 814 876 815 877 -- ··· 817 879 -- 818 880 819 881 ALTER TABLE ONLY public.field_tiles 820 - ADD CONSTRAINT field_tiles_account_id_tile_id_fkey FOREIGN KEY (account_id, tile_id) REFERENCES public.card_accounts(account_id, card_id) ON UPDATE CASCADE ON DELETE CASCADE; 882 + ADD CONSTRAINT field_tiles_account_id_tile_id_fkey FOREIGN KEY ( 883 + account_id, tile_id 884 + ) REFERENCES public.card_accounts ( 885 + account_id, card_id 886 + ) ON UPDATE CASCADE ON DELETE CASCADE; 821 887 822 888 823 889 -- ··· 825 891 -- 826 892 827 893 ALTER TABLE ONLY public.field_tiles 828 - ADD CONSTRAINT field_tiles_field_id_fkey FOREIGN KEY (field_id) REFERENCES public.fields(id) ON UPDATE CASCADE ON DELETE CASCADE; 894 + ADD CONSTRAINT field_tiles_field_id_fkey FOREIGN KEY ( 895 + field_id 896 + ) REFERENCES public.fields (id) ON UPDATE CASCADE ON DELETE CASCADE; 829 897 830 898 831 899 -- ··· 833 901 -- 834 902 835 903 ALTER TABLE ONLY public.field_tiles 836 - ADD CONSTRAINT field_tiles_tile_id_fkey FOREIGN KEY (tile_id) REFERENCES public.tiles(id) ON UPDATE CASCADE ON DELETE CASCADE; 904 + ADD CONSTRAINT field_tiles_tile_id_fkey FOREIGN KEY ( 905 + tile_id 906 + ) REFERENCES public.tiles (id) ON UPDATE CASCADE ON DELETE CASCADE; 837 907 838 908 839 909 -- ··· 841 911 -- 842 912 843 913 ALTER TABLE ONLY public.fields 844 - ADD CONSTRAINT fields_account_id_fkey FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON UPDATE CASCADE ON DELETE CASCADE; 914 + ADD CONSTRAINT fields_account_id_fkey FOREIGN KEY ( 915 + account_id 916 + ) REFERENCES public.accounts (id) ON UPDATE CASCADE ON DELETE CASCADE; 845 917 846 918 847 919 -- ··· 849 921 -- 850 922 851 923 ALTER TABLE ONLY public.pack_banner_cards 852 - ADD CONSTRAINT pack_banner_cards_card_type_id_fkey FOREIGN KEY (card_type_id) REFERENCES public.card_types(id) ON UPDATE CASCADE ON DELETE RESTRICT; 924 + ADD CONSTRAINT pack_banner_cards_card_type_id_fkey FOREIGN KEY ( 925 + card_type_id 926 + ) REFERENCES public.card_types (id) ON UPDATE CASCADE ON DELETE RESTRICT; 853 927 854 928 855 929 -- ··· 857 931 -- 858 932 859 933 ALTER TABLE ONLY public.pack_banner_cards 860 - ADD CONSTRAINT pack_banner_cards_pack_banner_id_fkey FOREIGN KEY (pack_banner_id) REFERENCES public.pack_banners(id) ON UPDATE CASCADE ON DELETE CASCADE; 934 + ADD CONSTRAINT pack_banner_cards_pack_banner_id_fkey FOREIGN KEY ( 935 + pack_banner_id 936 + ) REFERENCES public.pack_banners (id) ON UPDATE CASCADE ON DELETE CASCADE; 861 937 862 938 863 939 -- ··· 865 941 -- 866 942 867 943 ALTER TABLE ONLY public.pack_contents 868 - ADD CONSTRAINT pack_contents_card_id_fkey FOREIGN KEY (card_id) REFERENCES public.cards(id) ON UPDATE CASCADE ON DELETE CASCADE; 944 + ADD CONSTRAINT pack_contents_card_id_fkey FOREIGN KEY ( 945 + card_id 946 + ) REFERENCES public.cards (id) ON UPDATE CASCADE ON DELETE CASCADE; 869 947 870 948 871 949 -- ··· 873 951 -- 874 952 875 953 ALTER TABLE ONLY public.pack_contents 876 - ADD CONSTRAINT pack_contents_pack_id_fkey FOREIGN KEY (pack_id) REFERENCES public.packs(id) ON UPDATE CASCADE ON DELETE CASCADE; 954 + ADD CONSTRAINT pack_contents_pack_id_fkey FOREIGN KEY ( 955 + pack_id 956 + ) REFERENCES public.packs (id) ON UPDATE CASCADE ON DELETE CASCADE; 877 957 878 958 879 959 -- ··· 881 961 -- 882 962 883 963 ALTER TABLE ONLY public.packs 884 - ADD CONSTRAINT packs_account_id_fkey FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON UPDATE CASCADE ON DELETE CASCADE; 964 + ADD CONSTRAINT packs_account_id_fkey FOREIGN KEY ( 965 + account_id 966 + ) REFERENCES public.accounts (id) ON UPDATE CASCADE ON DELETE CASCADE; 885 967 886 968 887 969 -- ··· 889 971 -- 890 972 891 973 ALTER TABLE ONLY public.packs 892 - ADD CONSTRAINT packs_pack_banner_id_fkey FOREIGN KEY (pack_banner_id) REFERENCES public.pack_banners(id) ON UPDATE CASCADE ON DELETE RESTRICT; 974 + ADD CONSTRAINT packs_pack_banner_id_fkey FOREIGN KEY ( 975 + pack_banner_id 976 + ) REFERENCES public.pack_banners (id) ON UPDATE CASCADE ON DELETE RESTRICT; 893 977 894 978 895 979 -- ··· 897 981 -- 898 982 899 983 ALTER TABLE ONLY public.species 900 - ADD CONSTRAINT species_id_class_fkey FOREIGN KEY (id, class) REFERENCES public.card_types(id, class) ON UPDATE RESTRICT ON DELETE CASCADE; 984 + ADD CONSTRAINT species_id_class_fkey FOREIGN KEY ( 985 + id, class 986 + ) REFERENCES public.card_types (id, class) ON UPDATE RESTRICT ON DELETE CASCADE; 901 987 902 988 903 989 -- ··· 905 991 -- 906 992 907 993 ALTER TABLE ONLY public.species 908 - ADD CONSTRAINT species_id_fkey FOREIGN KEY (id) REFERENCES public.card_types(id) ON UPDATE CASCADE ON DELETE CASCADE; 994 + ADD CONSTRAINT species_id_fkey FOREIGN KEY (id) REFERENCES public.card_types ( 995 + id 996 + ) ON UPDATE CASCADE ON DELETE CASCADE; 909 997 910 998 911 999 -- ··· 913 1001 -- 914 1002 915 1003 ALTER TABLE ONLY public.species_needs 916 - ADD CONSTRAINT species_needs_resource_id_fkey FOREIGN KEY (resource_id) REFERENCES public.resources(id) ON UPDATE CASCADE ON DELETE RESTRICT; 1004 + ADD CONSTRAINT species_needs_resource_id_fkey FOREIGN KEY ( 1005 + resource_id 1006 + ) REFERENCES public.resources (id) ON UPDATE CASCADE ON DELETE RESTRICT; 917 1007 918 1008 919 1009 -- ··· 921 1011 -- 922 1012 923 1013 ALTER TABLE ONLY public.species_needs 924 - ADD CONSTRAINT species_needs_species_id_fkey FOREIGN KEY (species_id) REFERENCES public.species(id) ON UPDATE CASCADE ON DELETE CASCADE; 1014 + ADD CONSTRAINT species_needs_species_id_fkey FOREIGN KEY ( 1015 + species_id 1016 + ) REFERENCES public.species (id) ON UPDATE CASCADE ON DELETE CASCADE; 925 1017 926 1018 927 1019 -- ··· 929 1021 -- 930 1022 931 1023 ALTER TABLE ONLY public.tile_type_consumes 932 - ADD CONSTRAINT tile_type_consumes_resource_id_fkey FOREIGN KEY (resource_id) REFERENCES public.resources(id) ON UPDATE CASCADE ON DELETE RESTRICT; 1024 + ADD CONSTRAINT tile_type_consumes_resource_id_fkey FOREIGN KEY ( 1025 + resource_id 1026 + ) REFERENCES public.resources (id) ON UPDATE CASCADE ON DELETE RESTRICT; 933 1027 934 1028 935 1029 -- ··· 937 1031 -- 938 1032 939 1033 ALTER TABLE ONLY public.tile_type_consumes 940 - ADD CONSTRAINT tile_type_consumes_tile_type_id_fkey FOREIGN KEY (tile_type_id) REFERENCES public.tile_types(id) ON UPDATE CASCADE ON DELETE CASCADE; 1034 + ADD CONSTRAINT tile_type_consumes_tile_type_id_fkey FOREIGN KEY ( 1035 + tile_type_id 1036 + ) REFERENCES public.tile_types (id) ON UPDATE CASCADE ON DELETE CASCADE; 941 1037 942 1038 943 1039 -- ··· 945 1041 -- 946 1042 947 1043 ALTER TABLE ONLY public.tile_type_produces 948 - ADD CONSTRAINT tile_type_produces_resource_id_fkey FOREIGN KEY (resource_id) REFERENCES public.resources(id) ON UPDATE CASCADE ON DELETE RESTRICT; 1044 + ADD CONSTRAINT tile_type_produces_resource_id_fkey FOREIGN KEY ( 1045 + resource_id 1046 + ) REFERENCES public.resources (id) ON UPDATE CASCADE ON DELETE RESTRICT; 949 1047 950 1048 951 1049 -- ··· 953 1051 -- 954 1052 955 1053 ALTER TABLE ONLY public.tile_type_produces 956 - ADD CONSTRAINT tile_type_produces_tile_type_id_fkey FOREIGN KEY (tile_type_id) REFERENCES public.tile_types(id) ON UPDATE CASCADE ON DELETE CASCADE; 1054 + ADD CONSTRAINT tile_type_produces_tile_type_id_fkey FOREIGN KEY ( 1055 + tile_type_id 1056 + ) REFERENCES public.tile_types (id) ON UPDATE CASCADE ON DELETE CASCADE; 957 1057 958 1058 959 1059 -- ··· 961 1061 -- 962 1062 963 1063 ALTER TABLE ONLY public.tile_types 964 - ADD CONSTRAINT tile_types_id_class_fkey FOREIGN KEY (id, class) REFERENCES public.card_types(id, class) ON UPDATE RESTRICT ON DELETE CASCADE; 1064 + ADD CONSTRAINT tile_types_id_class_fkey FOREIGN KEY ( 1065 + id, class 1066 + ) REFERENCES public.card_types (id, class) ON UPDATE RESTRICT ON DELETE CASCADE; 965 1067 966 1068 967 1069 -- ··· 969 1071 -- 970 1072 971 1073 ALTER TABLE ONLY public.tile_types 972 - ADD CONSTRAINT tile_types_id_fkey FOREIGN KEY (id) REFERENCES public.card_types(id) ON UPDATE CASCADE ON DELETE CASCADE; 1074 + ADD CONSTRAINT tile_types_id_fkey FOREIGN KEY ( 1075 + id 1076 + ) REFERENCES public.card_types (id) ON UPDATE CASCADE ON DELETE CASCADE; 973 1077 974 1078 975 1079 -- ··· 977 1081 -- 978 1082 979 1083 ALTER TABLE ONLY public.tiles 980 - ADD CONSTRAINT tiles_id_fkey FOREIGN KEY (id) REFERENCES public.cards(id) ON UPDATE CASCADE ON DELETE CASCADE; 1084 + ADD CONSTRAINT tiles_id_fkey FOREIGN KEY (id) REFERENCES public.cards ( 1085 + id 1086 + ) ON UPDATE CASCADE ON DELETE CASCADE; 981 1087 982 1088 983 1089 -- ··· 985 1091 -- 986 1092 987 1093 ALTER TABLE ONLY public.tiles 988 - ADD CONSTRAINT tiles_id_tile_type_id_fkey FOREIGN KEY (id, tile_type_id) REFERENCES public.cards(id, card_type_id) ON UPDATE CASCADE ON DELETE CASCADE; 1094 + ADD CONSTRAINT tiles_id_tile_type_id_fkey FOREIGN KEY ( 1095 + id, tile_type_id 1096 + ) REFERENCES public.cards ( 1097 + id, card_type_id 1098 + ) ON UPDATE CASCADE ON DELETE CASCADE; 989 1099 990 1100 991 1101 -- ··· 993 1103 -- 994 1104 995 1105 ALTER TABLE ONLY public.tiles 996 - ADD CONSTRAINT tiles_tile_type_id_fkey FOREIGN KEY (tile_type_id) REFERENCES public.tile_types(id) ON UPDATE CASCADE ON DELETE RESTRICT; 1106 + ADD CONSTRAINT tiles_tile_type_id_fkey FOREIGN KEY ( 1107 + tile_type_id 1108 + ) REFERENCES public.tile_types (id) ON UPDATE CASCADE ON DELETE RESTRICT; 997 1109 998 1110 999 1111 -- ··· 1001 1113 -- 1002 1114 1003 1115 \unrestrict aa4b4bc410c5cacbd97fc326d0f62806 1004 -
+2
packages/cartography/fixtures/empty-banner.sql
··· 1 + INSERT INTO pack_banners (id, start_date, end_date) 2 + VALUES ('empty-banner', now() - '1 day'::interval, now() + '1 day'::interval);
+14
packages/cartography/fixtures/future-banner.sql
··· 1 + INSERT INTO card_sets (id, release_date) 2 + VALUES ('future-banner-card-set', now() - '30 days'::interval); 3 + 4 + INSERT INTO card_types (id, card_set_id, class) 5 + VALUES ('future-banner-card', 'future-banner-card-set', 'tile'); 6 + 7 + INSERT INTO tile_types (id, category, houses, employs) 8 + VALUES ('future-banner-card', 'residential', 3, 0); 9 + 10 + INSERT INTO pack_banners (id, start_date, end_date) 11 + VALUES ('future-banner', now() + '1 day'::interval, now() + '2 day'::interval); 12 + 13 + INSERT INTO pack_banner_cards (pack_banner_id, card_type_id, frequency) 14 + VALUES ('future-banner', 'future-banner-card', 1);
+14
packages/cartography/fixtures/past-banner.sql
··· 1 + INSERT INTO card_sets (id, release_date) 2 + VALUES ('past-banner-card-set', now() - '30 days'::interval); 3 + 4 + INSERT INTO card_types (id, card_set_id, class) 5 + VALUES ('past-banner-card', 'past-banner-card-set', 'tile'); 6 + 7 + INSERT INTO tile_types (id, category, houses, employs) 8 + VALUES ('past-banner-card', 'residential', 3, 0); 9 + 10 + INSERT INTO pack_banners (id, start_date, end_date) 11 + VALUES ('past-banner', now() - '2 day'::interval, now() - '1 day'::interval); 12 + 13 + INSERT INTO pack_banner_cards (pack_banner_id, card_type_id, frequency) 14 + VALUES ('past-banner', 'past-banner-card', 1);
+93 -93
packages/cartography/fixtures/seed.sql
··· 1 1 INSERT INTO resources (id) 2 - VALUES 3 - ('bread'), 4 - ('flour'), 5 - ('grain'), 6 - ('water'), 7 - ('lettuce'), 8 - ('carrot'), 9 - ('tomato'), 10 - ('salad') 2 + VALUES 3 + ('bread'), 4 + ('flour'), 5 + ('grain'), 6 + ('water'), 7 + ('lettuce'), 8 + ('carrot'), 9 + ('tomato'), 10 + ('salad') 11 11 ON CONFLICT DO NOTHING; 12 12 13 13 INSERT INTO card_sets (id, release_date) 14 - VALUES 15 - ('base', '2026-01-01T00:00:00Z') 14 + VALUES 15 + ('base', '2026-01-01T00:00:00Z') 16 16 ON CONFLICT (id) DO UPDATE 17 - SET release_date = EXCLUDED.release_date; 17 + SET release_date = excluded.release_date; 18 18 19 19 INSERT INTO card_types (id, card_set_id, class) 20 - VALUES 21 - ('rabbit', 'base', 'citizen'), 22 - ('cat', 'base', 'citizen'), 23 - ('bird', 'base', 'citizen'), 24 - ('cat-colony', 'base', 'tile'), 25 - ('rabbit-warren', 'base', 'tile'), 26 - ('bird-nest', 'base', 'tile'), 27 - ('water-well', 'base', 'tile'), 28 - ('carrot-farm', 'base', 'tile'), 29 - ('tomato-farm', 'base', 'tile'), 30 - ('lettuce-farm', 'base', 'tile'), 31 - ('grain-farm', 'base', 'tile'), 32 - ('flour-mill', 'base', 'tile'), 33 - ('bread-bakery', 'base', 'tile'), 34 - ('salad-shop', 'base', 'tile') 20 + VALUES 21 + ('rabbit', 'base', 'citizen'), 22 + ('cat', 'base', 'citizen'), 23 + ('bird', 'base', 'citizen'), 24 + ('cat-colony', 'base', 'tile'), 25 + ('rabbit-warren', 'base', 'tile'), 26 + ('bird-nest', 'base', 'tile'), 27 + ('water-well', 'base', 'tile'), 28 + ('carrot-farm', 'base', 'tile'), 29 + ('tomato-farm', 'base', 'tile'), 30 + ('lettuce-farm', 'base', 'tile'), 31 + ('grain-farm', 'base', 'tile'), 32 + ('flour-mill', 'base', 'tile'), 33 + ('bread-bakery', 'base', 'tile'), 34 + ('salad-shop', 'base', 'tile') 35 35 ON CONFLICT (id) DO UPDATE 36 - SET class = EXCLUDED.class, 37 - card_set_id = EXCLUDED.card_set_id; 36 + SET class = excluded.class, 37 + card_set_id = excluded.card_set_id; 38 38 39 39 INSERT INTO species (id) 40 - VALUES 41 - ('rabbit'), 42 - ('cat'), 43 - ('bird') 40 + VALUES 41 + ('rabbit'), 42 + ('cat'), 43 + ('bird') 44 44 ON CONFLICT DO NOTHING; 45 45 46 46 INSERT INTO pack_banners (id, start_date, end_date) 47 - VALUES 48 - ('default', '2026-01-01T00:00:00Z', '2026-01-01T00:00:00Z'), 49 - ('base-standard', '2026-01-01T00:00:00Z', NULL), 50 - ('halloween-2026', '2026-10-01T00:00:00Z', '2026-10-31T23:59:59Z') 47 + VALUES 48 + ('default', '2026-01-01T00:00:00Z', '2026-01-01T00:00:00Z'), 49 + ('base-standard', '2026-01-01T00:00:00Z', NULL), 50 + ('halloween-2026', '2026-10-01T00:00:00Z', '2026-10-31T23:59:59Z') 51 51 ON CONFLICT (id) DO UPDATE 52 - SET start_date = EXCLUDED.start_date, 53 - end_date = EXCLUDED.end_date; 52 + SET start_date = excluded.start_date, 53 + end_date = excluded.end_date; 54 54 55 55 INSERT INTO pack_banner_cards (pack_banner_id, card_type_id, frequency) 56 - VALUES 57 - ('base-standard', 'cat-colony', 3), 58 - ('base-standard', 'rabbit-warren', 3), 59 - ('base-standard', 'bird-nest', 3), 60 - ('base-standard', 'water-well', 3), 61 - ('base-standard', 'carrot-farm', 3), 62 - ('base-standard', 'tomato-farm', 3), 63 - ('base-standard', 'lettuce-farm', 3), 64 - ('base-standard', 'grain-farm', 3), 65 - ('base-standard', 'flour-mill', 3), 66 - ('base-standard', 'bread-bakery', 3), 67 - ('base-standard', 'salad-shop', 3), 68 - ('base-standard', 'rabbit', 1), 69 - ('base-standard', 'cat', 1), 70 - ('base-standard', 'bird', 1) 56 + VALUES 57 + ('base-standard', 'cat-colony', 3), 58 + ('base-standard', 'rabbit-warren', 3), 59 + ('base-standard', 'bird-nest', 3), 60 + ('base-standard', 'water-well', 3), 61 + ('base-standard', 'carrot-farm', 3), 62 + ('base-standard', 'tomato-farm', 3), 63 + ('base-standard', 'lettuce-farm', 3), 64 + ('base-standard', 'grain-farm', 3), 65 + ('base-standard', 'flour-mill', 3), 66 + ('base-standard', 'bread-bakery', 3), 67 + ('base-standard', 'salad-shop', 3), 68 + ('base-standard', 'rabbit', 1), 69 + ('base-standard', 'cat', 1), 70 + ('base-standard', 'bird', 1) 71 71 ON CONFLICT (pack_banner_id, card_type_id) DO UPDATE 72 - SET frequency = EXCLUDED.frequency; 72 + SET frequency = excluded.frequency; 73 73 74 74 INSERT INTO species_needs (species_id, resource_id, quantity) 75 - VALUES 76 - ('rabbit', 'salad', 1), 77 - ('cat', 'bread', 1), 78 - ('bird', 'grain', 1) 75 + VALUES 76 + ('rabbit', 'salad', 1), 77 + ('cat', 'bread', 1), 78 + ('bird', 'grain', 1) 79 79 ON CONFLICT (species_id, resource_id) DO UPDATE 80 - SET quantity = EXCLUDED.quantity; 80 + SET quantity = excluded.quantity; 81 81 82 82 INSERT INTO tile_types (id, category, houses, employs) 83 - VALUES 84 - ('cat-colony', 'residential', 3, 0), 85 - ('rabbit-warren', 'residential', 3, 0), 86 - ('bird-nest', 'residential', 3, 0), 87 - ('water-well', 'source', 0, 1), 88 - ('carrot-farm', 'production', 0, 3), 89 - ('tomato-farm', 'production', 0, 3), 90 - ('lettuce-farm', 'production', 0, 3), 91 - ('grain-farm', 'production', 0, 3), 92 - ('flour-mill', 'production', 0, 2), 93 - ('bread-bakery', 'amenity', 0, 2), 94 - ('salad-shop', 'amenity', 0, 2) 83 + VALUES 84 + ('cat-colony', 'residential', 3, 0), 85 + ('rabbit-warren', 'residential', 3, 0), 86 + ('bird-nest', 'residential', 3, 0), 87 + ('water-well', 'source', 0, 1), 88 + ('carrot-farm', 'production', 0, 3), 89 + ('tomato-farm', 'production', 0, 3), 90 + ('lettuce-farm', 'production', 0, 3), 91 + ('grain-farm', 'production', 0, 3), 92 + ('flour-mill', 'production', 0, 2), 93 + ('bread-bakery', 'amenity', 0, 2), 94 + ('salad-shop', 'amenity', 0, 2) 95 95 ON CONFLICT (id) DO UPDATE 96 - SET category = EXCLUDED.category, 97 - houses = EXCLUDED.houses, 98 - employs = EXCLUDED.employs; 96 + SET category = excluded.category, 97 + houses = excluded.houses, 98 + employs = excluded.employs; 99 99 100 100 INSERT INTO tile_type_consumes (tile_type_id, resource_id, quantity) 101 - VALUES 102 - ('flour-mill', 'grain', 1), 103 - ('bread-bakery', 'flour', 3), 104 - ('bread-bakery', 'water', 2), 105 - ('salad-shop', 'tomato', 1), 106 - ('salad-shop', 'lettuce', 1), 107 - ('salad-shop', 'carrot', 1) 101 + VALUES 102 + ('flour-mill', 'grain', 1), 103 + ('bread-bakery', 'flour', 3), 104 + ('bread-bakery', 'water', 2), 105 + ('salad-shop', 'tomato', 1), 106 + ('salad-shop', 'lettuce', 1), 107 + ('salad-shop', 'carrot', 1) 108 108 ON CONFLICT (tile_type_id, resource_id) DO UPDATE 109 - SET quantity = EXCLUDED.quantity; 109 + SET quantity = excluded.quantity; 110 110 111 111 INSERT INTO tile_type_produces (tile_type_id, resource_id, quantity) 112 - VALUES 113 - ('water-well', 'water', 10), 114 - ('carrot-farm', 'carrot', 5), 115 - ('tomato-farm', 'tomato', 5), 116 - ('lettuce-farm', 'lettuce', 5), 117 - ('grain-farm', 'grain', 5), 118 - ('flour-mill', 'flour', 10), 119 - ('bread-bakery', 'bread', 5), 120 - ('salad-shop', 'salad', 3) 112 + VALUES 113 + ('water-well', 'water', 10), 114 + ('carrot-farm', 'carrot', 5), 115 + ('tomato-farm', 'tomato', 5), 116 + ('lettuce-farm', 'lettuce', 5), 117 + ('grain-farm', 'grain', 5), 118 + ('flour-mill', 'flour', 10), 119 + ('bread-bakery', 'bread', 5), 120 + ('salad-shop', 'salad', 3) 121 121 ON CONFLICT (tile_type_id, resource_id) DO UPDATE 122 - SET quantity = EXCLUDED.quantity; 122 + SET quantity = excluded.quantity;
+69 -1
packages/cartography/src/api/operations/pull_banner.rs
··· 40 40 let mut conn = db.begin().await.map_err(internal_server_error)?; 41 41 42 42 let banner = sqlx::query!( 43 - "SELECT pack_size FROM pack_banners WHERE id = $1", 43 + r#" 44 + SELECT pack_size 45 + FROM pack_banners 46 + WHERE id = $1 AND start_date <= now() AND (end_date IS NULL OR end_date > now()) 47 + "#, 44 48 banner_id 45 49 ) 46 50 .fetch_optional(&mut *conn) ··· 213 217 #[sqlx::test( 214 218 migrator = "MIGRATOR", 215 219 fixtures(path = "../../../fixtures", scripts("seed", "account")) 220 + )] 221 + async fn pull_banner_banner_not_found(pool: PgPool) { 222 + let app = crate::app::Config::test(pool).into_router(); 223 + 224 + let request = Request::post("/api/v1/banners/fake-banner/pull") 225 + .header("Authorization", "Trust foxfriends") 226 + .body(Body::empty()) 227 + .unwrap(); 228 + 229 + let Ok(response) = app.oneshot(request).await; 230 + assert_eq!(response.status(), StatusCode::NOT_FOUND); 231 + } 232 + 233 + #[sqlx::test( 234 + migrator = "MIGRATOR", 235 + fixtures(path = "../../../fixtures", scripts("future-banner", "account")) 236 + )] 237 + async fn pull_banner_future_banner_not_found(pool: PgPool) { 238 + let app = crate::app::Config::test(pool).into_router(); 239 + 240 + let request = Request::post("/api/v1/banners/future-banner/pull") 241 + .header("Authorization", "Trust foxfriends") 242 + .body(Body::empty()) 243 + .unwrap(); 244 + 245 + let Ok(response) = app.oneshot(request).await; 246 + assert_eq!(response.status(), StatusCode::NOT_FOUND); 247 + } 248 + 249 + #[sqlx::test( 250 + migrator = "MIGRATOR", 251 + fixtures(path = "../../../fixtures", scripts("past-banner", "account")) 252 + )] 253 + async fn pull_banner_past_banner_not_found(pool: PgPool) { 254 + let app = crate::app::Config::test(pool).into_router(); 255 + 256 + let request = Request::post("/api/v1/banners/past-banner/pull") 257 + .header("Authorization", "Trust foxfriends") 258 + .body(Body::empty()) 259 + .unwrap(); 260 + 261 + let Ok(response) = app.oneshot(request).await; 262 + assert_eq!(response.status(), StatusCode::NOT_FOUND); 263 + } 264 + 265 + #[sqlx::test( 266 + migrator = "MIGRATOR", 267 + fixtures(path = "../../../fixtures", scripts("empty-banner", "account")) 268 + )] 269 + async fn pull_banner_empty_banner_not_found(pool: PgPool) { 270 + let app = crate::app::Config::test(pool).into_router(); 271 + 272 + let request = Request::post("/api/v1/banners/empty-banner/pull") 273 + .header("Authorization", "Trust foxfriends") 274 + .body(Body::empty()) 275 + .unwrap(); 276 + 277 + let Ok(response) = app.oneshot(request).await; 278 + assert_eq!(response.status(), StatusCode::NOT_FOUND); 279 + } 280 + 281 + #[sqlx::test( 282 + migrator = "MIGRATOR", 283 + fixtures(path = "../../../fixtures", scripts("seed")) 216 284 )] 217 285 async fn pull_banner_requires_authorization(pool: PgPool) { 218 286 let app = crate::app::Config::test(pool).into_router();