tangled
alpha
login
or
join now
eldridge.cam
/
cartography
0
fork
atom
Trading card city builder game?
0
fork
atom
overview
issues
pulls
pipelines
additional tests for pull banner
eldridge.cam
1 month ago
2655f636
6c0e696d
verified
This commit was signed with the committer's
known signature
.
eldridge.cam
SSH Key Fingerprint:
SHA256:MAgO4sya2MgvdgUjSGKAO0lQ9X2HQp1Jb+x/Tpeeims=
+407
-194
11 changed files
expand all
collapse all
unified
split
.github
workflows
rust.yml
.sqlx
query-a9b6f5683c626b4c84579e5df711576729a49894833ef10fe016cea566deef9a.json
query-adb01276963ff570fec52385b1a725f0dc439039ee2af93a9327713870fcb5e7.json
.sqruffignore
Justfile
generated
schema.sql
packages
cartography
fixtures
empty-banner.sql
future-banner.sql
past-banner.sql
seed.sql
src
api
operations
pull_banner.rs
+1
.github/workflows/rust.yml
···
54
54
run: |
55
55
cargo fmt -- --check
56
56
sqlx-fmt check
57
57
+
sqruff lint
57
58
build:
58
59
name: build
59
60
runs-on: ubuntu-latest
-22
.sqlx/query-a9b6f5683c626b4c84579e5df711576729a49894833ef10fe016cea566deef9a.json
···
1
1
-
{
2
2
-
"db_name": "PostgreSQL",
3
3
-
"query": "SELECT pack_size FROM pack_banners WHERE id = $1",
4
4
-
"describe": {
5
5
-
"columns": [
6
6
-
{
7
7
-
"ordinal": 0,
8
8
-
"name": "pack_size",
9
9
-
"type_info": "Int4"
10
10
-
}
11
11
-
],
12
12
-
"parameters": {
13
13
-
"Left": [
14
14
-
"Text"
15
15
-
]
16
16
-
},
17
17
-
"nullable": [
18
18
-
false
19
19
-
]
20
20
-
},
21
21
-
"hash": "a9b6f5683c626b4c84579e5df711576729a49894833ef10fe016cea566deef9a"
22
22
-
}
+22
.sqlx/query-adb01276963ff570fec52385b1a725f0dc439039ee2af93a9327713870fcb5e7.json
···
1
1
+
{
2
2
+
"db_name": "PostgreSQL",
3
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
4
+
"describe": {
5
5
+
"columns": [
6
6
+
{
7
7
+
"ordinal": 0,
8
8
+
"name": "pack_size",
9
9
+
"type_info": "Int4"
10
10
+
}
11
11
+
],
12
12
+
"parameters": {
13
13
+
"Left": [
14
14
+
"Text"
15
15
+
]
16
16
+
},
17
17
+
"nullable": [
18
18
+
false
19
19
+
]
20
20
+
},
21
21
+
"hash": "adb01276963ff570fec52385b1a725f0dc439039ee2af93a9327713870fcb5e7"
22
22
+
}
+2
.sqruffignore
···
1
1
+
generated/schema.sql
2
2
+
migrations/committed
+4
-3
Justfile
···
65
65
66
66
[group: "dev"]
67
67
generate:
68
68
-
cargo sqlx prepare --workspace
68
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
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
80
-
test: up
81
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
94
-
npx prettier migrations -w
95
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
70
-
CONSTRAINT accounts_id_check CHECK (((0 < length((id)::text)) AND (length((id)::text) <= 64)))
70
70
+
CONSTRAINT accounts_id_check CHECK (
71
71
+
((0 < length((id)::text)) AND (length((id)::text) <= 64))
72
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
105
-
CONSTRAINT card_sets_id_check CHECK (((0 < length(id)) AND (length(id) <= 64)))
107
107
+
CONSTRAINT card_sets_id_check CHECK (
108
108
+
((0 < length(id)) AND (length(id) <= 64))
109
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
124
-
CONSTRAINT card_types_id_check CHECK (((0 < length(id)) AND (length(id) <= 64)))
128
128
+
CONSTRAINT card_types_id_check CHECK (
129
129
+
((0 < length(id)) AND (length(id) <= 64))
130
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
175
-
CONSTRAINT citizens_name_check CHECK (((0 < length(name)) AND (length(name) < 64)))
181
181
+
CONSTRAINT citizens_name_check CHECK (
182
182
+
((0 < length(name)) AND (length(name) < 64))
183
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
234
-
CONSTRAINT fields_name_check CHECK (((0 < length(name)) AND (length(name) <= 64)))
242
242
+
CONSTRAINT fields_name_check CHECK (
243
243
+
((0 < length(name)) AND (length(name) <= 64))
244
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
287
-
CONSTRAINT pack_banners_id_check CHECK (((0 < length(id)) AND (length(id) <= 64)))
297
297
+
CONSTRAINT pack_banners_id_check CHECK (
298
298
+
((0 < length(id)) AND (length(id) <= 64))
299
299
+
)
288
300
);
289
301
290
302
···
368
380
369
381
CREATE TABLE public.resources (
370
382
id text NOT NULL,
371
371
-
CONSTRAINT resources_id_check CHECK (((0 < length(id)) AND (length(id) <= 64)))
383
383
+
CONSTRAINT resources_id_check CHECK (
384
384
+
((0 < length(id)) AND (length(id) <= 64))
385
385
+
)
372
386
);
373
387
374
388
···
385
399
386
400
CREATE TABLE public.species (
387
401
id text NOT NULL,
388
388
-
class public.card_class GENERATED ALWAYS AS ('citizen'::public.card_class) STORED NOT NULL,
389
389
-
CONSTRAINT species_id_check CHECK (((0 < length(id)) AND (length(id) <= 64)))
402
402
+
class public.card_class GENERATED ALWAYS AS (
403
403
+
'citizen'::public.card_class
404
404
+
) STORED NOT NULL,
405
405
+
CONSTRAINT species_id_check CHECK (
406
406
+
((0 < length(id)) AND (length(id) <= 64))
407
407
+
)
390
408
);
391
409
392
410
···
460
478
461
479
CREATE TABLE public.tile_types (
462
480
id text NOT NULL,
463
463
-
class public.card_class GENERATED ALWAYS AS ('tile'::public.card_class) STORED NOT NULL,
481
481
+
class public.card_class GENERATED ALWAYS AS (
482
482
+
'tile'::public.card_class
483
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
485
-
CONSTRAINT tiles_name_check CHECK (((0 < length(name)) AND (length(name) <= 64)))
505
505
+
CONSTRAINT tiles_name_check CHECK (
506
506
+
((0 < length(name)) AND (length(name) <= 64))
507
507
+
)
486
508
);
487
509
488
510
···
498
520
--
499
521
500
522
ALTER TABLE ONLY public.accounts
501
501
-
ADD CONSTRAINT accounts_pkey PRIMARY KEY (id);
523
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
509
-
ADD CONSTRAINT card_accounts_card_id_account_id_key UNIQUE (card_id, account_id);
531
531
+
ADD CONSTRAINT card_accounts_card_id_account_id_key UNIQUE (
532
532
+
card_id, account_id
533
533
+
);
510
534
511
535
512
536
--
···
514
538
--
515
539
516
540
ALTER TABLE ONLY public.card_accounts
517
517
-
ADD CONSTRAINT card_accounts_pkey PRIMARY KEY (card_id);
541
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
525
-
ADD CONSTRAINT card_sets_pkey PRIMARY KEY (id);
549
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
533
-
ADD CONSTRAINT card_types_id_class_key UNIQUE (id, class);
557
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
541
-
ADD CONSTRAINT card_types_pkey PRIMARY KEY (id);
565
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
549
-
ADD CONSTRAINT cards_id_card_type_id_key UNIQUE (id, card_type_id);
573
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
557
-
ADD CONSTRAINT cards_pkey PRIMARY KEY (id);
581
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
565
-
ADD CONSTRAINT citizens_pkey PRIMARY KEY (id);
589
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
573
-
ADD CONSTRAINT field_citizens_pkey PRIMARY KEY (citizen_id);
597
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
581
-
ADD CONSTRAINT field_tiles_pkey PRIMARY KEY (tile_id);
605
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
589
-
ADD CONSTRAINT fields_id_account_id_key UNIQUE (id, account_id);
613
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
597
-
ADD CONSTRAINT fields_pkey PRIMARY KEY (id);
621
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
605
-
ADD CONSTRAINT pack_banner_cards_pkey PRIMARY KEY (pack_banner_id, card_type_id);
629
629
+
ADD CONSTRAINT pack_banner_cards_pkey PRIMARY KEY (
630
630
+
pack_banner_id, card_type_id
631
631
+
);
606
632
607
633
608
634
--
···
610
636
--
611
637
612
638
ALTER TABLE ONLY public.pack_banners
613
613
-
ADD CONSTRAINT pack_banners_pkey PRIMARY KEY (id);
639
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
621
-
ADD CONSTRAINT pack_contents_pkey PRIMARY KEY (pack_id, "position");
647
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
629
-
ADD CONSTRAINT packs_pkey PRIMARY KEY (id);
655
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
637
-
ADD CONSTRAINT resources_pkey PRIMARY KEY (id);
663
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
645
-
ADD CONSTRAINT species_needs_pkey PRIMARY KEY (species_id, resource_id);
671
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
653
-
ADD CONSTRAINT species_pkey PRIMARY KEY (id);
679
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
661
-
ADD CONSTRAINT tile_type_consumes_pkey PRIMARY KEY (tile_type_id, resource_id);
687
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
669
-
ADD CONSTRAINT tile_type_produces_pkey PRIMARY KEY (tile_type_id, resource_id);
695
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
677
-
ADD CONSTRAINT tile_types_pkey PRIMARY KEY (id);
703
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
685
-
ADD CONSTRAINT tiles_pkey PRIMARY KEY (id);
711
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
692
-
CREATE INDEX card_accounts_account_id_index ON public.card_accounts USING btree (account_id);
718
718
+
CREATE INDEX card_accounts_account_id_index ON public.card_accounts USING btree (
719
719
+
account_id
720
720
+
);
693
721
694
722
695
723
--
···
697
725
--
698
726
699
727
ALTER TABLE ONLY public.card_accounts
700
700
-
ADD CONSTRAINT card_accounts_account_id_fkey FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON UPDATE CASCADE ON DELETE CASCADE;
728
728
+
ADD CONSTRAINT card_accounts_account_id_fkey FOREIGN KEY (
729
729
+
account_id
730
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
708
-
ADD CONSTRAINT card_accounts_card_id_fkey FOREIGN KEY (card_id) REFERENCES public.cards(id) ON UPDATE CASCADE ON DELETE CASCADE;
738
738
+
ADD CONSTRAINT card_accounts_card_id_fkey FOREIGN KEY (
739
739
+
card_id
740
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
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
748
+
ADD CONSTRAINT card_types_card_set_id_fkey FOREIGN KEY (
749
749
+
card_set_id
750
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
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
758
+
ADD CONSTRAINT cards_card_type_id_fkey FOREIGN KEY (
759
759
+
card_type_id
760
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
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
768
+
ADD CONSTRAINT citizens_home_tile_id_fkey FOREIGN KEY (
769
769
+
home_tile_id
770
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
740
-
ADD CONSTRAINT citizens_id_fkey FOREIGN KEY (id) REFERENCES public.cards(id) ON UPDATE CASCADE ON DELETE CASCADE;
778
778
+
ADD CONSTRAINT citizens_id_fkey FOREIGN KEY (id) REFERENCES public.cards (
779
779
+
id
780
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
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
788
+
ADD CONSTRAINT citizens_id_species_id_fkey FOREIGN KEY (
789
789
+
id, species_id
790
790
+
) REFERENCES public.cards (
791
791
+
id, card_type_id
792
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
756
-
ADD CONSTRAINT citizens_species_id_fkey FOREIGN KEY (species_id) REFERENCES public.species(id) ON UPDATE CASCADE ON DELETE CASCADE;
800
800
+
ADD CONSTRAINT citizens_species_id_fkey FOREIGN KEY (
801
801
+
species_id
802
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
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
810
+
ADD CONSTRAINT field_citizens_account_id_citizen_id_fkey FOREIGN KEY (
811
811
+
account_id, citizen_id
812
812
+
) REFERENCES public.card_accounts (
813
813
+
account_id, card_id
814
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
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
822
+
ADD CONSTRAINT field_citizens_account_id_field_id_fkey FOREIGN KEY (
823
823
+
account_id, field_id
824
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
780
-
ADD CONSTRAINT field_citizens_account_id_fkey FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON UPDATE CASCADE ON DELETE CASCADE;
832
832
+
ADD CONSTRAINT field_citizens_account_id_fkey FOREIGN KEY (
833
833
+
account_id
834
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
788
-
ADD CONSTRAINT field_citizens_citizen_id_fkey FOREIGN KEY (citizen_id) REFERENCES public.citizens(id) ON UPDATE CASCADE ON DELETE CASCADE;
842
842
+
ADD CONSTRAINT field_citizens_citizen_id_fkey FOREIGN KEY (
843
843
+
citizen_id
844
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
796
-
ADD CONSTRAINT field_citizens_field_id_fkey FOREIGN KEY (field_id) REFERENCES public.fields(id) ON UPDATE CASCADE ON DELETE CASCADE;
852
852
+
ADD CONSTRAINT field_citizens_field_id_fkey FOREIGN KEY (
853
853
+
field_id
854
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
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
862
+
ADD CONSTRAINT field_tiles_account_id_field_id_fkey FOREIGN KEY (
863
863
+
account_id, field_id
864
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
812
-
ADD CONSTRAINT field_tiles_account_id_fkey FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON UPDATE CASCADE ON DELETE CASCADE;
872
872
+
ADD CONSTRAINT field_tiles_account_id_fkey FOREIGN KEY (
873
873
+
account_id
874
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
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
882
+
ADD CONSTRAINT field_tiles_account_id_tile_id_fkey FOREIGN KEY (
883
883
+
account_id, tile_id
884
884
+
) REFERENCES public.card_accounts (
885
885
+
account_id, card_id
886
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
828
-
ADD CONSTRAINT field_tiles_field_id_fkey FOREIGN KEY (field_id) REFERENCES public.fields(id) ON UPDATE CASCADE ON DELETE CASCADE;
894
894
+
ADD CONSTRAINT field_tiles_field_id_fkey FOREIGN KEY (
895
895
+
field_id
896
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
836
-
ADD CONSTRAINT field_tiles_tile_id_fkey FOREIGN KEY (tile_id) REFERENCES public.tiles(id) ON UPDATE CASCADE ON DELETE CASCADE;
904
904
+
ADD CONSTRAINT field_tiles_tile_id_fkey FOREIGN KEY (
905
905
+
tile_id
906
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
844
-
ADD CONSTRAINT fields_account_id_fkey FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON UPDATE CASCADE ON DELETE CASCADE;
914
914
+
ADD CONSTRAINT fields_account_id_fkey FOREIGN KEY (
915
915
+
account_id
916
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
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
924
+
ADD CONSTRAINT pack_banner_cards_card_type_id_fkey FOREIGN KEY (
925
925
+
card_type_id
926
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
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
934
+
ADD CONSTRAINT pack_banner_cards_pack_banner_id_fkey FOREIGN KEY (
935
935
+
pack_banner_id
936
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
868
-
ADD CONSTRAINT pack_contents_card_id_fkey FOREIGN KEY (card_id) REFERENCES public.cards(id) ON UPDATE CASCADE ON DELETE CASCADE;
944
944
+
ADD CONSTRAINT pack_contents_card_id_fkey FOREIGN KEY (
945
945
+
card_id
946
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
876
-
ADD CONSTRAINT pack_contents_pack_id_fkey FOREIGN KEY (pack_id) REFERENCES public.packs(id) ON UPDATE CASCADE ON DELETE CASCADE;
954
954
+
ADD CONSTRAINT pack_contents_pack_id_fkey FOREIGN KEY (
955
955
+
pack_id
956
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
884
-
ADD CONSTRAINT packs_account_id_fkey FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON UPDATE CASCADE ON DELETE CASCADE;
964
964
+
ADD CONSTRAINT packs_account_id_fkey FOREIGN KEY (
965
965
+
account_id
966
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
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
974
+
ADD CONSTRAINT packs_pack_banner_id_fkey FOREIGN KEY (
975
975
+
pack_banner_id
976
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
900
-
ADD CONSTRAINT species_id_class_fkey FOREIGN KEY (id, class) REFERENCES public.card_types(id, class) ON UPDATE RESTRICT ON DELETE CASCADE;
984
984
+
ADD CONSTRAINT species_id_class_fkey FOREIGN KEY (
985
985
+
id, class
986
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
908
-
ADD CONSTRAINT species_id_fkey FOREIGN KEY (id) REFERENCES public.card_types(id) ON UPDATE CASCADE ON DELETE CASCADE;
994
994
+
ADD CONSTRAINT species_id_fkey FOREIGN KEY (id) REFERENCES public.card_types (
995
995
+
id
996
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
916
-
ADD CONSTRAINT species_needs_resource_id_fkey FOREIGN KEY (resource_id) REFERENCES public.resources(id) ON UPDATE CASCADE ON DELETE RESTRICT;
1004
1004
+
ADD CONSTRAINT species_needs_resource_id_fkey FOREIGN KEY (
1005
1005
+
resource_id
1006
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
924
-
ADD CONSTRAINT species_needs_species_id_fkey FOREIGN KEY (species_id) REFERENCES public.species(id) ON UPDATE CASCADE ON DELETE CASCADE;
1014
1014
+
ADD CONSTRAINT species_needs_species_id_fkey FOREIGN KEY (
1015
1015
+
species_id
1016
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
932
-
ADD CONSTRAINT tile_type_consumes_resource_id_fkey FOREIGN KEY (resource_id) REFERENCES public.resources(id) ON UPDATE CASCADE ON DELETE RESTRICT;
1024
1024
+
ADD CONSTRAINT tile_type_consumes_resource_id_fkey FOREIGN KEY (
1025
1025
+
resource_id
1026
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
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
1034
+
ADD CONSTRAINT tile_type_consumes_tile_type_id_fkey FOREIGN KEY (
1035
1035
+
tile_type_id
1036
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
948
-
ADD CONSTRAINT tile_type_produces_resource_id_fkey FOREIGN KEY (resource_id) REFERENCES public.resources(id) ON UPDATE CASCADE ON DELETE RESTRICT;
1044
1044
+
ADD CONSTRAINT tile_type_produces_resource_id_fkey FOREIGN KEY (
1045
1045
+
resource_id
1046
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
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
1054
+
ADD CONSTRAINT tile_type_produces_tile_type_id_fkey FOREIGN KEY (
1055
1055
+
tile_type_id
1056
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
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
1064
+
ADD CONSTRAINT tile_types_id_class_fkey FOREIGN KEY (
1065
1065
+
id, class
1066
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
972
-
ADD CONSTRAINT tile_types_id_fkey FOREIGN KEY (id) REFERENCES public.card_types(id) ON UPDATE CASCADE ON DELETE CASCADE;
1074
1074
+
ADD CONSTRAINT tile_types_id_fkey FOREIGN KEY (
1075
1075
+
id
1076
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
980
-
ADD CONSTRAINT tiles_id_fkey FOREIGN KEY (id) REFERENCES public.cards(id) ON UPDATE CASCADE ON DELETE CASCADE;
1084
1084
+
ADD CONSTRAINT tiles_id_fkey FOREIGN KEY (id) REFERENCES public.cards (
1085
1085
+
id
1086
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
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
1094
+
ADD CONSTRAINT tiles_id_tile_type_id_fkey FOREIGN KEY (
1095
1095
+
id, tile_type_id
1096
1096
+
) REFERENCES public.cards (
1097
1097
+
id, card_type_id
1098
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
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
1106
+
ADD CONSTRAINT tiles_tile_type_id_fkey FOREIGN KEY (
1107
1107
+
tile_type_id
1108
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
1004
-
+2
packages/cartography/fixtures/empty-banner.sql
···
1
1
+
INSERT INTO pack_banners (id, start_date, end_date)
2
2
+
VALUES ('empty-banner', now() - '1 day'::interval, now() + '1 day'::interval);
+14
packages/cartography/fixtures/future-banner.sql
···
1
1
+
INSERT INTO card_sets (id, release_date)
2
2
+
VALUES ('future-banner-card-set', now() - '30 days'::interval);
3
3
+
4
4
+
INSERT INTO card_types (id, card_set_id, class)
5
5
+
VALUES ('future-banner-card', 'future-banner-card-set', 'tile');
6
6
+
7
7
+
INSERT INTO tile_types (id, category, houses, employs)
8
8
+
VALUES ('future-banner-card', 'residential', 3, 0);
9
9
+
10
10
+
INSERT INTO pack_banners (id, start_date, end_date)
11
11
+
VALUES ('future-banner', now() + '1 day'::interval, now() + '2 day'::interval);
12
12
+
13
13
+
INSERT INTO pack_banner_cards (pack_banner_id, card_type_id, frequency)
14
14
+
VALUES ('future-banner', 'future-banner-card', 1);
+14
packages/cartography/fixtures/past-banner.sql
···
1
1
+
INSERT INTO card_sets (id, release_date)
2
2
+
VALUES ('past-banner-card-set', now() - '30 days'::interval);
3
3
+
4
4
+
INSERT INTO card_types (id, card_set_id, class)
5
5
+
VALUES ('past-banner-card', 'past-banner-card-set', 'tile');
6
6
+
7
7
+
INSERT INTO tile_types (id, category, houses, employs)
8
8
+
VALUES ('past-banner-card', 'residential', 3, 0);
9
9
+
10
10
+
INSERT INTO pack_banners (id, start_date, end_date)
11
11
+
VALUES ('past-banner', now() - '2 day'::interval, now() - '1 day'::interval);
12
12
+
13
13
+
INSERT INTO pack_banner_cards (pack_banner_id, card_type_id, frequency)
14
14
+
VALUES ('past-banner', 'past-banner-card', 1);
+93
-93
packages/cartography/fixtures/seed.sql
···
1
1
INSERT INTO resources (id)
2
2
-
VALUES
3
3
-
('bread'),
4
4
-
('flour'),
5
5
-
('grain'),
6
6
-
('water'),
7
7
-
('lettuce'),
8
8
-
('carrot'),
9
9
-
('tomato'),
10
10
-
('salad')
2
2
+
VALUES
3
3
+
('bread'),
4
4
+
('flour'),
5
5
+
('grain'),
6
6
+
('water'),
7
7
+
('lettuce'),
8
8
+
('carrot'),
9
9
+
('tomato'),
10
10
+
('salad')
11
11
ON CONFLICT DO NOTHING;
12
12
13
13
INSERT INTO card_sets (id, release_date)
14
14
-
VALUES
15
15
-
('base', '2026-01-01T00:00:00Z')
14
14
+
VALUES
15
15
+
('base', '2026-01-01T00:00:00Z')
16
16
ON CONFLICT (id) DO UPDATE
17
17
-
SET release_date = EXCLUDED.release_date;
17
17
+
SET release_date = excluded.release_date;
18
18
19
19
INSERT INTO card_types (id, card_set_id, class)
20
20
-
VALUES
21
21
-
('rabbit', 'base', 'citizen'),
22
22
-
('cat', 'base', 'citizen'),
23
23
-
('bird', 'base', 'citizen'),
24
24
-
('cat-colony', 'base', 'tile'),
25
25
-
('rabbit-warren', 'base', 'tile'),
26
26
-
('bird-nest', 'base', 'tile'),
27
27
-
('water-well', 'base', 'tile'),
28
28
-
('carrot-farm', 'base', 'tile'),
29
29
-
('tomato-farm', 'base', 'tile'),
30
30
-
('lettuce-farm', 'base', 'tile'),
31
31
-
('grain-farm', 'base', 'tile'),
32
32
-
('flour-mill', 'base', 'tile'),
33
33
-
('bread-bakery', 'base', 'tile'),
34
34
-
('salad-shop', 'base', 'tile')
20
20
+
VALUES
21
21
+
('rabbit', 'base', 'citizen'),
22
22
+
('cat', 'base', 'citizen'),
23
23
+
('bird', 'base', 'citizen'),
24
24
+
('cat-colony', 'base', 'tile'),
25
25
+
('rabbit-warren', 'base', 'tile'),
26
26
+
('bird-nest', 'base', 'tile'),
27
27
+
('water-well', 'base', 'tile'),
28
28
+
('carrot-farm', 'base', 'tile'),
29
29
+
('tomato-farm', 'base', 'tile'),
30
30
+
('lettuce-farm', 'base', 'tile'),
31
31
+
('grain-farm', 'base', 'tile'),
32
32
+
('flour-mill', 'base', 'tile'),
33
33
+
('bread-bakery', 'base', 'tile'),
34
34
+
('salad-shop', 'base', 'tile')
35
35
ON CONFLICT (id) DO UPDATE
36
36
-
SET class = EXCLUDED.class,
37
37
-
card_set_id = EXCLUDED.card_set_id;
36
36
+
SET class = excluded.class,
37
37
+
card_set_id = excluded.card_set_id;
38
38
39
39
INSERT INTO species (id)
40
40
-
VALUES
41
41
-
('rabbit'),
42
42
-
('cat'),
43
43
-
('bird')
40
40
+
VALUES
41
41
+
('rabbit'),
42
42
+
('cat'),
43
43
+
('bird')
44
44
ON CONFLICT DO NOTHING;
45
45
46
46
INSERT INTO pack_banners (id, start_date, end_date)
47
47
-
VALUES
48
48
-
('default', '2026-01-01T00:00:00Z', '2026-01-01T00:00:00Z'),
49
49
-
('base-standard', '2026-01-01T00:00:00Z', NULL),
50
50
-
('halloween-2026', '2026-10-01T00:00:00Z', '2026-10-31T23:59:59Z')
47
47
+
VALUES
48
48
+
('default', '2026-01-01T00:00:00Z', '2026-01-01T00:00:00Z'),
49
49
+
('base-standard', '2026-01-01T00:00:00Z', NULL),
50
50
+
('halloween-2026', '2026-10-01T00:00:00Z', '2026-10-31T23:59:59Z')
51
51
ON CONFLICT (id) DO UPDATE
52
52
-
SET start_date = EXCLUDED.start_date,
53
53
-
end_date = EXCLUDED.end_date;
52
52
+
SET start_date = excluded.start_date,
53
53
+
end_date = excluded.end_date;
54
54
55
55
INSERT INTO pack_banner_cards (pack_banner_id, card_type_id, frequency)
56
56
-
VALUES
57
57
-
('base-standard', 'cat-colony', 3),
58
58
-
('base-standard', 'rabbit-warren', 3),
59
59
-
('base-standard', 'bird-nest', 3),
60
60
-
('base-standard', 'water-well', 3),
61
61
-
('base-standard', 'carrot-farm', 3),
62
62
-
('base-standard', 'tomato-farm', 3),
63
63
-
('base-standard', 'lettuce-farm', 3),
64
64
-
('base-standard', 'grain-farm', 3),
65
65
-
('base-standard', 'flour-mill', 3),
66
66
-
('base-standard', 'bread-bakery', 3),
67
67
-
('base-standard', 'salad-shop', 3),
68
68
-
('base-standard', 'rabbit', 1),
69
69
-
('base-standard', 'cat', 1),
70
70
-
('base-standard', 'bird', 1)
56
56
+
VALUES
57
57
+
('base-standard', 'cat-colony', 3),
58
58
+
('base-standard', 'rabbit-warren', 3),
59
59
+
('base-standard', 'bird-nest', 3),
60
60
+
('base-standard', 'water-well', 3),
61
61
+
('base-standard', 'carrot-farm', 3),
62
62
+
('base-standard', 'tomato-farm', 3),
63
63
+
('base-standard', 'lettuce-farm', 3),
64
64
+
('base-standard', 'grain-farm', 3),
65
65
+
('base-standard', 'flour-mill', 3),
66
66
+
('base-standard', 'bread-bakery', 3),
67
67
+
('base-standard', 'salad-shop', 3),
68
68
+
('base-standard', 'rabbit', 1),
69
69
+
('base-standard', 'cat', 1),
70
70
+
('base-standard', 'bird', 1)
71
71
ON CONFLICT (pack_banner_id, card_type_id) DO UPDATE
72
72
-
SET frequency = EXCLUDED.frequency;
72
72
+
SET frequency = excluded.frequency;
73
73
74
74
INSERT INTO species_needs (species_id, resource_id, quantity)
75
75
-
VALUES
76
76
-
('rabbit', 'salad', 1),
77
77
-
('cat', 'bread', 1),
78
78
-
('bird', 'grain', 1)
75
75
+
VALUES
76
76
+
('rabbit', 'salad', 1),
77
77
+
('cat', 'bread', 1),
78
78
+
('bird', 'grain', 1)
79
79
ON CONFLICT (species_id, resource_id) DO UPDATE
80
80
-
SET quantity = EXCLUDED.quantity;
80
80
+
SET quantity = excluded.quantity;
81
81
82
82
INSERT INTO tile_types (id, category, houses, employs)
83
83
-
VALUES
84
84
-
('cat-colony', 'residential', 3, 0),
85
85
-
('rabbit-warren', 'residential', 3, 0),
86
86
-
('bird-nest', 'residential', 3, 0),
87
87
-
('water-well', 'source', 0, 1),
88
88
-
('carrot-farm', 'production', 0, 3),
89
89
-
('tomato-farm', 'production', 0, 3),
90
90
-
('lettuce-farm', 'production', 0, 3),
91
91
-
('grain-farm', 'production', 0, 3),
92
92
-
('flour-mill', 'production', 0, 2),
93
93
-
('bread-bakery', 'amenity', 0, 2),
94
94
-
('salad-shop', 'amenity', 0, 2)
83
83
+
VALUES
84
84
+
('cat-colony', 'residential', 3, 0),
85
85
+
('rabbit-warren', 'residential', 3, 0),
86
86
+
('bird-nest', 'residential', 3, 0),
87
87
+
('water-well', 'source', 0, 1),
88
88
+
('carrot-farm', 'production', 0, 3),
89
89
+
('tomato-farm', 'production', 0, 3),
90
90
+
('lettuce-farm', 'production', 0, 3),
91
91
+
('grain-farm', 'production', 0, 3),
92
92
+
('flour-mill', 'production', 0, 2),
93
93
+
('bread-bakery', 'amenity', 0, 2),
94
94
+
('salad-shop', 'amenity', 0, 2)
95
95
ON CONFLICT (id) DO UPDATE
96
96
-
SET category = EXCLUDED.category,
97
97
-
houses = EXCLUDED.houses,
98
98
-
employs = EXCLUDED.employs;
96
96
+
SET category = excluded.category,
97
97
+
houses = excluded.houses,
98
98
+
employs = excluded.employs;
99
99
100
100
INSERT INTO tile_type_consumes (tile_type_id, resource_id, quantity)
101
101
-
VALUES
102
102
-
('flour-mill', 'grain', 1),
103
103
-
('bread-bakery', 'flour', 3),
104
104
-
('bread-bakery', 'water', 2),
105
105
-
('salad-shop', 'tomato', 1),
106
106
-
('salad-shop', 'lettuce', 1),
107
107
-
('salad-shop', 'carrot', 1)
101
101
+
VALUES
102
102
+
('flour-mill', 'grain', 1),
103
103
+
('bread-bakery', 'flour', 3),
104
104
+
('bread-bakery', 'water', 2),
105
105
+
('salad-shop', 'tomato', 1),
106
106
+
('salad-shop', 'lettuce', 1),
107
107
+
('salad-shop', 'carrot', 1)
108
108
ON CONFLICT (tile_type_id, resource_id) DO UPDATE
109
109
-
SET quantity = EXCLUDED.quantity;
109
109
+
SET quantity = excluded.quantity;
110
110
111
111
INSERT INTO tile_type_produces (tile_type_id, resource_id, quantity)
112
112
-
VALUES
113
113
-
('water-well', 'water', 10),
114
114
-
('carrot-farm', 'carrot', 5),
115
115
-
('tomato-farm', 'tomato', 5),
116
116
-
('lettuce-farm', 'lettuce', 5),
117
117
-
('grain-farm', 'grain', 5),
118
118
-
('flour-mill', 'flour', 10),
119
119
-
('bread-bakery', 'bread', 5),
120
120
-
('salad-shop', 'salad', 3)
112
112
+
VALUES
113
113
+
('water-well', 'water', 10),
114
114
+
('carrot-farm', 'carrot', 5),
115
115
+
('tomato-farm', 'tomato', 5),
116
116
+
('lettuce-farm', 'lettuce', 5),
117
117
+
('grain-farm', 'grain', 5),
118
118
+
('flour-mill', 'flour', 10),
119
119
+
('bread-bakery', 'bread', 5),
120
120
+
('salad-shop', 'salad', 3)
121
121
ON CONFLICT (tile_type_id, resource_id) DO UPDATE
122
122
-
SET quantity = EXCLUDED.quantity;
122
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
43
-
"SELECT pack_size FROM pack_banners WHERE id = $1",
43
43
+
r#"
44
44
+
SELECT pack_size
45
45
+
FROM pack_banners
46
46
+
WHERE id = $1 AND start_date <= now() AND (end_date IS NULL OR end_date > now())
47
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
220
+
)]
221
221
+
async fn pull_banner_banner_not_found(pool: PgPool) {
222
222
+
let app = crate::app::Config::test(pool).into_router();
223
223
+
224
224
+
let request = Request::post("/api/v1/banners/fake-banner/pull")
225
225
+
.header("Authorization", "Trust foxfriends")
226
226
+
.body(Body::empty())
227
227
+
.unwrap();
228
228
+
229
229
+
let Ok(response) = app.oneshot(request).await;
230
230
+
assert_eq!(response.status(), StatusCode::NOT_FOUND);
231
231
+
}
232
232
+
233
233
+
#[sqlx::test(
234
234
+
migrator = "MIGRATOR",
235
235
+
fixtures(path = "../../../fixtures", scripts("future-banner", "account"))
236
236
+
)]
237
237
+
async fn pull_banner_future_banner_not_found(pool: PgPool) {
238
238
+
let app = crate::app::Config::test(pool).into_router();
239
239
+
240
240
+
let request = Request::post("/api/v1/banners/future-banner/pull")
241
241
+
.header("Authorization", "Trust foxfriends")
242
242
+
.body(Body::empty())
243
243
+
.unwrap();
244
244
+
245
245
+
let Ok(response) = app.oneshot(request).await;
246
246
+
assert_eq!(response.status(), StatusCode::NOT_FOUND);
247
247
+
}
248
248
+
249
249
+
#[sqlx::test(
250
250
+
migrator = "MIGRATOR",
251
251
+
fixtures(path = "../../../fixtures", scripts("past-banner", "account"))
252
252
+
)]
253
253
+
async fn pull_banner_past_banner_not_found(pool: PgPool) {
254
254
+
let app = crate::app::Config::test(pool).into_router();
255
255
+
256
256
+
let request = Request::post("/api/v1/banners/past-banner/pull")
257
257
+
.header("Authorization", "Trust foxfriends")
258
258
+
.body(Body::empty())
259
259
+
.unwrap();
260
260
+
261
261
+
let Ok(response) = app.oneshot(request).await;
262
262
+
assert_eq!(response.status(), StatusCode::NOT_FOUND);
263
263
+
}
264
264
+
265
265
+
#[sqlx::test(
266
266
+
migrator = "MIGRATOR",
267
267
+
fixtures(path = "../../../fixtures", scripts("empty-banner", "account"))
268
268
+
)]
269
269
+
async fn pull_banner_empty_banner_not_found(pool: PgPool) {
270
270
+
let app = crate::app::Config::test(pool).into_router();
271
271
+
272
272
+
let request = Request::post("/api/v1/banners/empty-banner/pull")
273
273
+
.header("Authorization", "Trust foxfriends")
274
274
+
.body(Body::empty())
275
275
+
.unwrap();
276
276
+
277
277
+
let Ok(response) = app.oneshot(request).await;
278
278
+
assert_eq!(response.status(), StatusCode::NOT_FOUND);
279
279
+
}
280
280
+
281
281
+
#[sqlx::test(
282
282
+
migrator = "MIGRATOR",
283
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();