Simplify aime_player schema

This commit is contained in:
Tau
2019-11-06 17:29:07 -05:00
parent 04b0ccfda3
commit b096a79f95
3 changed files with 39 additions and 48 deletions
+3 -29
View File
@@ -1,35 +1,9 @@
create table "aime_shop" (
"id" integer primary key not null,
"ext_id" integer not null,
"name" text not null,
"region" text not null,
constraint "aime_shop_uq" unique ("ext_id")
);
create table "aime_machine" (
"id" integer primary key not null,
"shop_id" integer not null
references "aime_shop"("id"),
"pcb_id" text not null,
"keychip_id" text not null,
constraint "aime_machine_pcb_id_uq" unique ("pcb_id"),
constraint "aime_machine_keychip_id_uq" unique ("keychip_id")
);
create table "aime_player" (
"id" integer primary key not null,
"ext_id" integer not null,
"register_time" timestamp not null,
constraint "aime_player_uq" unique ("ext_id")
);
create table "aime_card" (
"id" integer primary key not null,
"player_id" integer not null
references "aime_player"("id")
on delete cascade,
"nfc_id" text not null,
"luid" text not null,
"register_time" timestamp not null,
"access_time" timestamp not null,
constraint "aime_card_uq" unique ("nfc_id")
constraint "aime_player_ext_id_uq" unique ("ext_id"),
constraint "aime_player_luid_uq" unique ("luid")
);
@@ -0,0 +1,27 @@
-- Can't add NOT NULL or UNIQUE constraints as we'd like to. Fortunately we
-- haven't released anything yet so there aren't really any DBs with live
-- data out there in the wild.
-- (Can't drop and recreate the table either btw because "aime_player" is
-- transitively referenced by _literally everything_).
alter table "aime_player" add column "luid" text;
alter table "aime_player" add column "access_time" text;
update "aime_player" as "p"
set "luid" = (
select "c"."nfc_id"
from "aime_card" as "c"
where "c"."player_id" = "p"."id"
),
"access_time" = (
select "c"."access_time"
from "aime_card" as "c"
where "c"."player_id" = "p"."id"
);
drop table "aime_card";
-- These were never used. Re-create them if they become necessary.
drop table "aime_machine";
drop table "aime_shop";