/*
Copyright (C) 2024 filifa

This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
this program. If not, see <https://www.gnu.org/licenses/>.
*/

pragma foreign_keys = 0;

begin;
attach database 'lahman-raw.db' as 'raw';

create temp table pitchingpost as
select * from "raw".pitchingpost;

alter table pitchingpost drop column "lgID";
alter table pitchingpost drop column "teamID";

update pitchingpost
set
	W = nullif(W, ''),
	L = nullif(L, ''),
	G = nullif(G, ''),
	GS = nullif(GS, ''),
	CG = nullif(CG, ''),
	SHO = nullif(SHO, ''),
	SV = nullif(SV, ''),
	IPouts = nullif(IPouts, ''),
	H = nullif(H, ''),
	ER = nullif(ER, ''),
	HR = nullif(HR, ''),
	BB = nullif(BB, ''),
	SO = nullif(SO, ''),
	BAOpp = nullif(BAOpp, ''),
	IBB = nullif(IBB, ''),
	WP = nullif(WP, ''),
	HBP = nullif(HBP, ''),
	BK = nullif(BK, ''),
	BFP = nullif(BFP, ''),
	GF = nullif(GF, ''),
	R = nullif(R, ''),
	SH = nullif(SH, ''),
	SF = nullif(SF, ''),
	GIDP = nullif(GIDP, '');

CREATE TABLE IF NOT EXISTS main."pitchingpost" (
	"player"	TEXT,
	"year"	NUMERIC,
	"round"	NUMERIC,
	"W"	NUMERIC	check (W <= G),
	"L"	NUMERIC	check (L <= G),
	"G"	NUMERIC	check (W + L + SV <= G),
	"GS"	NUMERIC	check (GS <= G),
	"CG"	NUMERIC	check (CG <= GS),
	"SHO"	NUMERIC check (SHO <= G),
	"SV"	NUMERIC	check (SV <= G),
	"IPouts"	NUMERIC,
	"H"	NUMERIC,
	"ER"	NUMERIC	check (ER <= R),
	"HR"	NUMERIC check (HR <= H),
	"BB"	NUMERIC,
	"SO"	NUMERIC	check (SO <= IPouts),
	"BAOpp"	NUMERIC,
	"ERA"	NUMERIC,
	"IBB"	NUMERIC,
	"WP"	NUMERIC,
	"HBP"	NUMERIC,
	"BK"	NUMERIC,
	"BFP"	NUMERIC,
	"GF"	NUMERIC	check (GF <= G),
	"R"	NUMERIC,
	"SH"	NUMERIC,
	"SF"	NUMERIC,
	"GIDP"	NUMERIC	check (2 * GIDP <= IPouts),
	PRIMARY KEY("player","year","round"),
	foreign key("player","year") references "appearancespost"("player","year"),
	foreign key("year","round") references "seriespost"("year","round")
);

insert into main.pitchingpost select distinct * from temp."pitchingpost";
commit;
