From abe47445876c1ddcfa08756679af80d885e1195b Mon Sep 17 00:00:00 2001 From: stratic-dev Date: Wed, 24 Jan 2024 04:35:24 +0000 Subject: [PATCH] Added db init script. Combined all schemas under schemas. Persisted updates and init --- .gitignore | 3 +- docker/README.md | 34 +-- docker/docker-compose.yml | 32 ++- docker/init/setup.sh | 22 ++ schemas/9.1-init.sql | Bin 0 -> 64231 bytes .../bundled-schema}/DistributionDemo.sql | 0 .../bundled-schema}/DivaShops.sql | 0 .../bundled-schema}/EventQuests.sql | 0 .../bundled-schema}/FPointItems.sql | 0 .../bundled-schema}/FestaDefaults.sql | 0 .../bundled-schema}/GachaDemo.sql | 0 .../bundled-schema}/NetcafeDefaults.sql | 0 .../bundled-schema}/OtherShops.sql | 0 .../bundled-schema}/RoadShopItems.sql | 0 .../bundled-schema}/ScenarioDefaults.sql | 0 .../patch-schema}/.gitkeep | 0 .../patch-schema}/00-psn-id.sql | 0 .../patch-schema}/01-wiiu-key.sql | 0 .../patch-schema}/02-tower.sql | 0 .../patch-schema}/03-event_quests.sql | 0 .../patch-schema}/04-trend-weapons.sql | 0 .../patch-schema}/05-gacha-roll-name.sql | 0 .../patch-schema}/06-goocoo-rename.sql | 0 .../patch-schema}/07-scenarios-counter.sql | 0 .../patch-schema}/08-kill-counts.sql | 0 .../patch-schema}/09-fix-guild-treasure.sql | 0 .../patch-schema}/10-rework-distributions.sql | 0 .../patch-schema}/11-event-quest-flags.sql | 0 .../patch-schema}/12-event_quest_cycling.sql | 0 .../patch-schema}/13-festa-trial-votes.sql | 0 .../patch-schema}/14-fix-fpoint-trades.sql | 0 .../patch-schema}/15-reset-goocoos.sql | 0 .../16-discord-password-resets.sql | 0 .../patch-schema}/op-accounts.sql | 0 .../patch-schema}/psn-link.sql | 0 schemas/update-schema/9.2-update.sql | 241 ++++++++++++++++++ 36 files changed, 309 insertions(+), 23 deletions(-) create mode 100644 docker/init/setup.sh create mode 100644 schemas/9.1-init.sql rename {bundled-schema => schemas/bundled-schema}/DistributionDemo.sql (100%) rename {bundled-schema => schemas/bundled-schema}/DivaShops.sql (100%) rename {bundled-schema => schemas/bundled-schema}/EventQuests.sql (100%) rename {bundled-schema => schemas/bundled-schema}/FPointItems.sql (100%) rename {bundled-schema => schemas/bundled-schema}/FestaDefaults.sql (100%) rename {bundled-schema => schemas/bundled-schema}/GachaDemo.sql (100%) rename {bundled-schema => schemas/bundled-schema}/NetcafeDefaults.sql (100%) rename {bundled-schema => schemas/bundled-schema}/OtherShops.sql (100%) rename {bundled-schema => schemas/bundled-schema}/RoadShopItems.sql (100%) rename {bundled-schema => schemas/bundled-schema}/ScenarioDefaults.sql (100%) rename {patch-schema => schemas/patch-schema}/.gitkeep (100%) rename {patch-schema => schemas/patch-schema}/00-psn-id.sql (100%) rename {patch-schema => schemas/patch-schema}/01-wiiu-key.sql (100%) rename {patch-schema => schemas/patch-schema}/02-tower.sql (100%) rename {patch-schema => schemas/patch-schema}/03-event_quests.sql (100%) rename {patch-schema => schemas/patch-schema}/04-trend-weapons.sql (100%) rename {patch-schema => schemas/patch-schema}/05-gacha-roll-name.sql (100%) rename {patch-schema => schemas/patch-schema}/06-goocoo-rename.sql (100%) rename {patch-schema => schemas/patch-schema}/07-scenarios-counter.sql (100%) rename {patch-schema => schemas/patch-schema}/08-kill-counts.sql (100%) rename {patch-schema => schemas/patch-schema}/09-fix-guild-treasure.sql (100%) rename {patch-schema => schemas/patch-schema}/10-rework-distributions.sql (100%) rename {patch-schema => schemas/patch-schema}/11-event-quest-flags.sql (100%) rename {patch-schema => schemas/patch-schema}/12-event_quest_cycling.sql (100%) rename {patch-schema => schemas/patch-schema}/13-festa-trial-votes.sql (100%) rename {patch-schema => schemas/patch-schema}/14-fix-fpoint-trades.sql (100%) rename {patch-schema => schemas/patch-schema}/15-reset-goocoos.sql (100%) rename {patch-schema => schemas/patch-schema}/16-discord-password-resets.sql (100%) rename {patch-schema => schemas/patch-schema}/op-accounts.sql (100%) rename {patch-schema => schemas/patch-schema}/psn-link.sql (100%) create mode 100644 schemas/update-schema/9.2-update.sql diff --git a/.gitignore b/.gitignore index a36e91559..4101960d2 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ vendor/ savedata/*/ *.exe *.lnk -*.bat \ No newline at end of file +*.bat +/docker/db-data \ No newline at end of file diff --git a/docker/README.md b/docker/README.md index 11a5cb04a..3f45a12c0 100644 --- a/docker/README.md +++ b/docker/README.md @@ -17,6 +17,8 @@ Docker compose allows you to run multiple containers at once. The docker compose - pg admin (Admin interface to make db changes) - erupe +We automatically populate the database to the latest version on start. If you you are updating you will need to apply the new schemas manually. + Before we get started you should make sure the database info matches whats in the docker compose file for the environment variables `POSTGRES_PASSWORD`,`POSTGRES_USER` and `POSTGRES_DB`. You can set the host to be the service name `db`. Here is a example of what you would put in the config.json if you was to leave the defaults. It is strongly recommended to change the password. @@ -30,29 +32,29 @@ Here is a example of what you would put in the config.json if you was to leave t }, ``` -### Running up the database for the first time -First we need to set up the database. This requires the schema and the patch schemas to be applied. This can be done by runnnig up both the db and pgadmin. +Place this file within ./docker/config.json + +You will need to do the same for your bins place these in ./docker/bin + +# Setting up the web hosted materials +Clone the Severs repo into ./docker/Severs + +Make sure your hosts are pointing to where this is hosted -1. Pull the remote images and build a container image for erupe -```bash -docker-compose pull -docker-compose build -``` -2. Run up pgadmin and login using the username and password provided in `PGADMIN_DEFAULT_EMAIL` and `PGADMIN_DEFAULT_PASSWORD` note you will need to set up a new connection to the database internally. You will use the same host, database, username and password as above. -```bash -docker-compose run db pgadmin -d -``` -3. Use pgadmin to restore the schema using the restore functionaltiy and they query tool for the patch-schemas. -4. Now run up the server you should see the server start correctly now. -```bash -docker-compose run server -d -``` ## Turning off the server safely ```bash docker-compose stop ``` + +## Turning off the server destructive +```bash +docker-compose down +``` +Make sure if you want to delete your data you delete the folders that persisted +- ./docker/savedata +- ./docker/db-data ## Turning on the server again This boots the db pgadmin and the server in a detached state ```bash diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 3503326db..a610836ee 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -14,6 +14,15 @@ services: - POSTGRES_DB=erupe ports: - "5432:5432" + volumes: + - ./db-data/:/var/lib/postgresql/data/ + - ../schemas/:/schemas/ + - ./init/setup.sh:/docker-entrypoint-initdb.d/setup.sh + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 5s + timeout: 5s + retries: 5 pgadmin: image: dpage/pgadmin4 restart: always @@ -23,17 +32,19 @@ services: ports: - "5050:80" depends_on: - - db + db: + condition: service_healthy server: depends_on: - - db + db: + condition: service_healthy # If using prebuilt container change paths and config build: context: ../ volumes: - - ../config.json:/app/erupe/config.json - - ../bin:/app/erupe/bin - - ../savedata:/app/erupe/savedata + - ./config.json:/app/erupe/config.json + - ./bin:/app/erupe/bin + - ./savedata:/app/erupe/savedata ports: # (Make sure these match config.json) - "53312:53312" #Sign V1 @@ -48,4 +59,13 @@ services: - "54006:54006" - "54007:54007" - "54008:54008" - + web: + image: httpd:latest + container_name: my-apache-app + ports: + - '80:80' + volumes: + - ./Servers:/usr/local/apache2/htdocs + depends_on: + db: + condition: service_healthy \ No newline at end of file diff --git a/docker/init/setup.sh b/docker/init/setup.sh new file mode 100644 index 000000000..d9fda8d59 --- /dev/null +++ b/docker/init/setup.sh @@ -0,0 +1,22 @@ +#!/bin/bash +set -e +echo "INIT!" +pg_restore --username="$POSTGRES_USER" --dbname="$POSTGRES_DB" --verbose /schemas/9.1-init.sql + + + +echo "Updating!" + +for file in /schemas/update-schema/* +do + psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -1 -f $file +done + + + +echo "Patching!" + +for file in /schemas/patch-schema/* +do + psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -1 -f $file +done \ No newline at end of file diff --git a/schemas/9.1-init.sql b/schemas/9.1-init.sql new file mode 100644 index 0000000000000000000000000000000000000000..3ae0ca127112d22ee882d7d7c9bfdebedf6362e4 GIT binary patch literal 64231 zcmd6Q3yfshc~-4=ZSRZ|+j)VBAzW`Z%nXc|zPBD-ZD$j;yL)FlJJU1n?#X&^OmVyW zc6WKIt7_{pyR(rjMRp_}2@iop2nn$vab5@z3Irh(p&$~35P~FxkPw0i!GsWk2_b|K zhyVZ2`#+DWuIk2V?e^S0_dLJzzs`UDbMC!cn|JO#@z&Z?Pe1X*6E*m$P@y{-N1u-C2nlTOt?92|A~C)xAawfp-ow6DGQDs?dWtA^b=E_>sOvQWpd z-rBbWdxK-z+uz*V--Yh%(GaaasYll_3-o9_Df>s|=%{lz=pPS8XV9z8crt>2#@M?- zfAPNkrFh@A)^|5vytlspqUf9Xlls=CzTMv1*w2P1ox^fc_68@=h_o&-(c%xvUqtsrG% zcWZrrD^o8r%A38sz5imizjf!{ZG8EBHmS~ry>e2mWQtJq^k=v4Zmi$NOxL#hC%x|Y zw6i{iStxtm^0~Zd7BC65FTu8V@7`nWgojKtI2?>8C!=Z{rJm1fLK35HtWwt1m6di* zGgCc6a-BSu?6Cjfo*ecE&9E^s8%_^;-NWZh{%m~@#(DovcKvDwKi7^cptNf@#UDrA zNBa5ESf!p-uS2eDS78=wzfTP|T)P}}?M;wPG;LUCzM+48c<4Cct=ik5TI?`%vj;TS z8%#$e1ZBT7y|Qt42Q&^8-Ot3^&f#fw_%PdeackqH?E3ZVU%P($ z{#N!?&u1$)vh|(KOeTEg^I5Cetha95K+bCd{*{)P}aktJwFUZvnfFM(l`k1)!6&jjhf5yHfUl0ysqyzJ8;o$&@5Xe|vrB*8TNcpdWg}lkqD(N(8W;efH}6 zwr*|jT+Oa-@9b^u?q@(XckN0>)k$|esYchYUKv%#-J_dXzj_Tc;-l`(41a?*8G*zQ zf1sk9bk8dB7pkk9*;)A-sN2WDb0YO&x7Wk`hvn!|^~w~aJEY4-a`RZ2$GUlJn8)Ug zt5=AS_p<9b4KgVSn&yA4V#lpzHDp#wnj*nDVKqpIZ89RX?@$)0%$D0SH+*H?1H-D%G@;n}%}J zQf`{cODimDn}6H`D=$Z;9}<;m%s4u^x$#7yW|Bmf}t z3Gk3l0Ec`6G~^S2A)f#X`2~h>dBx;{ZUxor9`TzVS6Wgy&4UwBc*e1%qwK?--E@8 zw$i2ioK#n@;1ZDJ>+{GmO8h)8nlVzyO#or!CV)(G6F@Y%2_T`|1Q1ki0>~>j0mPP0 zP$GmU6g;8M6B<0B$rD;UVU;JedBPe`$XC3S+)ME~n|r;@z3%2-e{-+Hx!2>|>vHb( zxiEd^lJxof>XnyY+}hm|v;phVVhtG0ry`|5Z9+oXqja^#z*5;xn$p}(A}Vm5VDz|7 z!pej?*GWdJ>m=1TGZ8AqOoU1?6QNSfM5q)s5geMl2tp&pq>T(pJ|$CiH@$`V+fE(+!H0gg7UaPe%rYcL^Dk2>@U9EhwoxA(l&i&iBg;VFK zJ3btM9}zN4z)}~9{qfYn==SE;&i?lP136o&t!!ugjyI`R$HV;xrekQZ0-_(N{F^SJ5ADPOFtQ9->{ul+dHhQBke@r zlzmRz-wvfx#0^CxT+?wiLIRei8l&(@chajY@*7np_;aiTq*d!rB=62()II6inJD$3 zHvq@ToFohVyBL!Fi8zRD@_8zfJ%#1tsS;{r1c25BAP00Av$x zPk*P0g1lg&041jQ;i90`pe2`@h_k^_H6rD}3HdRUPe}w*a+cOZBJP)Gob8!bLxa|E z`yYVT<3wxPz8Jdw*AgsWa<W?P+E)8tEpc0@OK=oHW;nG zfx8EkO}4hSTKhZ#|FjF6W@li=h;2H{DEkbkzc7`WGPCHjJUm^|>P*=QD?--7yFBr( zNW7~j-Zc{Mnu&L<#JknRyLRH;TH;-v1SW+{o`NP%VUwr8$y4a$DR}Y}K6whDJcUq^ zLa0a~RHP6pQV10(go+eGMGB!Jg;0?~s7N7HPa#xKAyf|_L?%rJQX!-r49{PTUic|! zNBnR#y1F7nQ+G6&##O--3QOsvR~a%2ptMR}w1|dvg*N(9?fM{*Xr^EDE%4qHmfa8> z0bvptKXh0gSGcyVhOiOEO^g!*kF&6I3Q6frY0+iJ;b}Q44`C}TWJ(jsybId$Nycf( zhXcyM56=DkYu-1;A<1c{5ZgQ$^rxOK`$1?Yq|0=HS&9s|_rOqnMGJJ-`vB1cXS7M5 zdLM=Om1)_BmB(YRFu`kLQEb6cMCI7eqnX?8jO>Ajx-e>T0 zf$M+Z(reHeBFb4^@$s9mJErQ5Vne0BNnTvHct9mH6?*wFuSHV#4FSduDUV6-7$0 zjAt>QTB;wQFGITay5r7q1u+j*b}$(9sX*h1Tpio)^nNlWTa3R!6u@D)6p=L{3^KhWE4~Ab*~&xIuK(BjvDFu z5w(rWM-})Q%Ix6rq$)+)QFS;tdkh!YfFGI%)UnX&h0)#$M51I%{S;5LN_&%;Sa1XY3Gb_$~rv#6bk z6i~@LU=SVJ<*l5+GNSB2ePz!DPrLvh?O7-t1@_qP)KS^(J?@~G&+r!nMw|_^SG$u_ z>>MS(4$*UB4vt3ykk_CQhXa_ev0FbB7^4sQcwkpgv)h3|j-81cKkW89=m)X$K7@F` z$6)(V?QZ2KheMV?p>nv5CBl4Qb2ia^jV{DuT))B4#c~~rSuq|+y<}r~B|%#nEtYdk z^WPotc|+iDVRDM0ddEQetoHYc(Ui z69yM)wl+8iP^(%0GHvkFqB8i+wL!aHL*1qY=QwUI{0YbxvEaSpmv1j%Kzi6-(3r}h z_|OtMLepY|wjcK_42FD_!T4=KgCUGx!eY1uZAL5x-gn<*&^ea28S*w8-p@e4#E(ZM z4O-&Co*fA8gDGyH@deB>vz*cDu|hyFrtYwR8~@oIIk6uU%9As49;jka7++AfnB+ z`&D!PwOeeon>#DiI-bAQd9y;TU}Eth#risDR-=UUcoR+!o78-! zH1tzrmIZmzXy)7EY>E;;`cR1=Y$feJ2PcK$)=Pf&ISdgB907}2kYV?;_% zz9;+bLFtKG-+^XHE9nK5S~!Un*Go_&EI$Jkc@oslv$PB?_`2(7p>N`c%h0toIxAr} zKaRSCj-ifO($tiea@DTdlb|8lO1z|r!CCCtb(w~IVlZQ!pQ}DU>bqFWY3WOX+FO@? zGJ=W7JxjL;;ZJ(RKYZkB6p9s}X##5X;o9besgB2YFclqL5JMq>Rtmno`FU|LSIF%s zT8#^*Z#1xKezOr$7UAWKrDvfhL9yfv!N+e-fz;vx>8}I@61r-g22-Nwt08k(6ggFR zLP)$_TKu%Q3HQY@YRKz(4TpPNm6PeH>WBp)H{!k?a)iW=TS~IpoNVIqmaNIFSk-Id z8y$r0@QvHLKmX8a_(6F)zYO}qC{S>!33poY6kXY&GgY1>LPI$WlPNPx9@&z}oZQl8 zjx>A0X`yW@g_L+T9!z`VSsrd{z3-OpPtQ8&Qt>KJm{&F;3r>O*Vs*an{YBB)C<;2r zYPTI#n!`D!MHiOyBcPAs6w;b{jtDDr`q1|F2m8AqXv`-4f+$vblWbC_?Pwrj!X^z= zaQVVtn;~2Y1$yHHIj0I(<%IVgK^1^DX`tDZB8c0hfr>nJVCPv{DXi8R#k@5}F)MNv zBbpb1>mmZm6M5G5EtAbC@|>cQvxKua%30tbKU2PSY~MON?J}6&7@F0tPZcnY@H0a( zNY@$P9C~{Uw0xzo6a+c4J+%HKG#ghCqRcD>F*x{ebqKH+KY=U4PX=(o#>t@E5Gxvgp=n0dt8n4N`89*~l%SCz_1gx-*5IQ^Dt4=sCUd zft*+9@g>8@X9zu~*=2;DQ&B|di9E{-J$-i&{_f+wQ;1{&3Z0n9rh?`fyvT}K4Z$wf^LFfh62G>eVtI$h0;CxhhZKZ5D zYXCk$3CQM?m+qFs+Dh(hLBQXPgE17;)bGqkn+}nS{lD?)V8~Y`e;$}WBuz~TdoIML zvnRt|v0RR>AcZIq%ggG%qb4G|(0KZuHAC6K8U1i2uoa!kpPw^-F<*YzVjGoRxT;4{ zXsEwLKgx0I4*#@!R2}!q6TJbaUK5Fh_q5EcEJ$FCaQ?lb8?kt>7&)&~q>E`V%*@|C zlYB%uNkmA2K2t-$?dY+`X@;xq5)91Y%wiLYQOb^xoqfK0%*QMmxOgTPMh1WvSv zijGRyr+rK_Z&lou3VqP);U<26Vi%P!QQpMf(Vly+d)AE=v`OiMA2R3|GexEH5ULM; zh)C*Lm~4NWl+W;jghdicNvhbt)+Q>KXsSFT&`-q)v`sX7G8jDMGR?9?9J?0t&aw_hpDNMhm|wtFYtzBnWr){5v90?$5bMF(uR7`+i1Vv@ufdCxNl8tHi%*wgMrPQ1Y#MQCYs%Sn9C(<2 zH@uNIZ|P}_GxeW=+%cwReV3J7K7&68eG2YDM26*qN_f$)G_&*IlD`^c_7tLt5R*L^ zMuhRh$ofKn+-_Z_$XZTm`S-&hlFZKPit)P2wlu5Pc~r!wp@-tfqoGwggDY9x+#u;` z|F1}Ef2-syh8Jx`c`&)@~h* z$SL1R`Oj*GJu%V9>D;j2fw-jjb5L1YQW%K;|HUV)K(A85!tc|<@}kb&XWto=7kC~! zj%&g`co_;NMTS3?nAEUxE-yH^tNItApW=rLjz(cE8Z^&(V&i^NY?yL$3k~~Bi!P4p z*?#e1IA?H9OF@c`M+4Zgh2t@B6~XwlJJgOhwa5q^vw$mc@U&n5sCrG?6)HcEDTPqg z(G+|m!i&%y8# zg2n66;$nqw4S!cqte8cI*L2DbnYHNfDvO8|lW%!}!qwC-#VKixE(Q|f6c1>5vgC)8 zvV@AvEk=~{z*YXIcrGYvnauV~^dPQGAFE=1jZw*_!ZqaM4xHnEX(sDcS-(AoL1y66)_ba81(q?>yp+16V~*3%mU1 zTwd6n@ll*tUT`1h_sozNcB{+C3%j0(yr3*g%Zmp0Yknq9E8-**87Q8p=su~9I$vea zyj>%{VX-({ijuPAFt6FK+1l zpJ3kw&Zd%39M`!ksRv-3vl8hJ!f(rQf6!zEF^8_er+&lz8pquU41d-f+qsK#`!%KOOE?>xf6TAxT zXRDii#h3Ba-Aa=Cgg_~e@U8&kI1;Jm_Fu)SE;}28PvzGaR1@R86FNk+;3z5C9iIfm zu+O(R`=6o^{O11swSwl{x`ziYd4m0Sj#?~K+bbxIZ&W9UlgC!DVrNtR%gP z#Y2{l;1VLb%0UWGfg@an<6J}|QlHu0d`3$_H4%jKR|IkP2CyLFDr!;vOPmS@i2V6A z_2ADyvxZTDUOzh9n~^K3KLy!^gT`tj&rd{(kIJ$(2Wt(7qKzXoMPGJ_RM&^`}$W{MVls1zP; z2RO@M-Ea^JYkEPdWmJl>KH`Vr)P{oxm;|P2kBf$nMXsd5yt9_#@SzCWREtIGfZ@~~ z(#Ls?)Me0tA&MuseB&%_BC=X&@$K8d%GL>5nXC#}rqAcBFDDbYolQwOw#3`UjW9Y-Ty1|Q&(ms4j=Eo!MORu1moLH0X zYZUy0sYW1*G+b}n+Ji|ad<{h`(+j>ZNW>;D>I=M~b8q?xNgxCIA;6&P4PFgZEZ?4X zPfioBPeSkTLnm-4A#AfUdr@^7zCYGIo1UdQcQBZqoK8|XMuYO`xHlM##?Xq`m<UgVA7}*> ze7F2A6b)HOri3yD`Y~Ovvs&k6!e`%f&I^irxdKcnejKw0?i6nc$AY}dwS(W%@|H$_ zCo*)WkYyT1Zw(jh2$YRR=n0%FhrnlN{fVyxw+3IyQsa0j^NNV}UC?uX<>~Z$L4sw3 z^_vo2Z~fVZV@Vi4HwJs?tn8e1Pa+p197aI)3QC|KL0}hte=K-R^{5Lc1+}d+$0E^d zDS991OE6>?+H-mnMXmqv_2k=r7y z8LH#7*O?5!Owrt`mVI*D2;M{RSq0aR8y)Ot!LP)oE?O3xT)mcV3*OIa3$n~=i>5EU zvmn5^n0fo{IQ5HLEa02>!|5)yJ16XRY#HuH8=OFZ4{0=qGw3Z{ z!=AX_oIuQ=m%gsI$8|AKJ{e_!dXrdy+~FPz{LKi6BDaLkEP2vWgT0;hg%4rIkupKo z(;-AV&I~F~(52|{#en&iD444Sc^pWX9>6(T|Fe+Ih)}VL%z_mcp3eDpOmNP(i(CEi z(trEZyGR8F1&@+LuHr@D1GD0Vi8B>*AySXw1aB9QD%(wfv+UvcwCWw(i6X*NK=TbCs z)$fdt;+#IF7WXlIf6&K-K}3G5DOXcGa@DWL^Eg>qmUcX~c;sp=Oe?LmcB4+K18m(B zs_#ySfSK_xSfjS=nM8Fsn7u<|m&bj;*LF|M2SK!B9=^Nht~%(8FUAWmWrxl$%^2&u zFbSMXZMdm zmWUJCE_wNkuGc0!MBVO&kJ+3o-sBAM*MltX0hTz6_dFmM4okOt9AxX|qZgW7WIY{b zXmB~f4Qf}Qt8f`$Mf#5~{tuqi6yR+C>H?OnIb*$mtm@owg9*+JH<;j90GQxd0GJ?e zxDgzO2~AtUVnT~2tn!35Pgvs#@MTa-ZDXw~T0WVk^FUe=NUI0Z8iBNCAgvWhTMeYO z18Hk44IR%zXJnM(%mSr2(?BWCJWz@=5tQQ01f@7rK`G8$P>M4dl;X?=rMS~UNqjy; zzR-aAj8INKC6vhLgcA9rP$HidO61c*iF{rt(M$|!g7D`BHIw<04R{uQ&ZiANjuBY& zgXN0WN`tr^KV~UD1*1P*mvxWGBPf^a;--fl6tV+B?(W=vp!OzANhb;fmQZ_J`&y&o z`Wvo2ynapYd+1V913_RYTsnIQ8h3mHz8+}y;vCVVOSusz&=%=Z*=HZJIh8?6TzUxb z&^}1vePQsc!!Uw%)Xd3wrA-QmVhrHePvNM)1mq1a38XF-M)E6JlL~)b%xmpJpv>C> z!kp`)m*NnLTVm`lRRlpCu@TwC=oCH=J=z7sKz z2B~)ORe~Uh$80nww(z9$MPT+sVAm<7>CaX;{akjld6 zht#>bnCY4%q>&acgi67+M%1|~)y^u9JiZ-<6xB_glr-M#7liVF@tn=xROmbqT6YUF z=vu59$=bmdE(EfoB_Q*zR=gXBszDcui|DgbUt<@9?R7RD2R3mTm#N@f5VFEy=6)Y* zUct!oSo zIk48H_Aa;z+Ka>5qHm-~inZ?J2_pLuHn;$?b`=YNYZVXUyUDuX;%gPZB#5OP^)6X@ zIS%ovB@|{D?X!h~Rl)h;HHE|ACWV42d`ZwstzYLC&HT|gv~Bt@m7rd_Um-}g_;H`K zKoDim52$_Z1JhT=HRmiV?Y{E%E<|nBrP}hY!sx_dT(e-LL3auEalOmD~3d;h8KiUls!L;_F?Apz!+}tLSSr2l~m^{sTYSa zrv)X!77L>BsxxrJ%6B%xi1!bg_i-An481KB}>v6~mGSM+UJV|kuaRFIBeDFvR>?Bm{*Syx>uAsFN6_JU1beP!!X>&g-~Bp!sYMl zakyIK0Y|u+HT1!khjc8o1IN5F^^7;PbcPSB$Mi*;jk`O0`@8GgJNx8)uYHh>&bGW& z4N#ldBHi4~OnJY7?B4G7o%P)Z*-Kjwvg_R=bb_1j%KK|3tA648PF3zZ#G&Wv(Bsqa zgvtivz6cUJiY16|g=>hv6-RNk_AJz-`lSvzv%lkDcA>DKy7*var71vV7HY@ERG*$k zXm{psEefyQ)WQho+~@PR;|Qpy2&; zH5NshwX`_c+-LdAVX#3Z)f=@hBd|}q;HbvCO~$~q=8rhQUzZ%SsUZxlc^?J!#W@=Y zz{zS~7|13+ul6^>K!S7y=jIm^kV3j1ln@hF_T%uGn~dXf04fNfr|Nb2o;0-}NABqj z32f{jX(CIYs)`rJE9ci_{7M)v+>dS1DSflksh{GQeQkmwbny^k`el^Zxc9+^Oqccm z({HHWg<kDY$C9C+T& z>)(xo*Cb)*Y-QSi!~skRJG+Jug!cO=h$&%bSKz^Dzg!YXZUp^C7)acA6<WDKB!OHfPJy{$nv}vug;! zX1`yE+UyEEYO`N1M{V9Gt$#BLzrKDCMQt)~+EAq}4)*3R7%rHxL2R zs(oRK^mbGKei%qp9&5GdfEW2^2{WFcFHY&imV{>smgcpEz~y1CKR6f4Gw{XQUD8EJZ)R{p z|71k}oWeiUGYl-0kMuEE>p8cci<_DLK&wo~b1XMA_1RUNuas3_!N6s-d9|E)fn(6* zR$BgF7H|F!;&WUVE_jSppiqM7yxvaDD-;jTD5OW_IrkLX%8-H-JeXB&ixWS;?fi%0 zz%*<4Z6C2WVMQkJ1R7q@1C?^*@mhl5vB-ibkSSAzH{?s1P%DcA%>By$Fb=TrNy!fC zeSY?L9Nv_Ro>h`SSG5}jH|30C&BU;E+E^S~Zp8g?9NM*7ZfMuu;+H)(Ngcfs0}p$U zjL#RskbpYUs8*b!Z{4Gt=8QM=3B_{Cm+Osa9Giwn`wLG9e1emtwHMj&kE0W_mXnt- z&}Tm>PWdS>pyxHaI^M%wU`kBAp%$8E90NVAzZZ}6u}t+LJ{Dx1cX#U970q7Vi1bHdKMbZo~e6r z2)P~c&*KoTSrCfA3<04C?pOjssvr)bsedsDMPI`Znz|Q8U!_)Ge5VT&VfI)*7 zOe4a(OCcO?X$ioY)%a6!px0`D2!VF5g3j3A6pkdX>bo{+x5sgF~-G_myuEpew6>Gqcf1_Lc3QLBN)it`pRhW(`mlXAf zi&S0P;s9|==V#-<)N3m+z20@AnU~_Yii7kyNYIH_T?j`nlhdXqQrjDzvirU2JnHmv zI1Mh2KR1(pE{=bbWU$wf0RB;uO&!+uDxME_Y>N@IwFQxq!(M}PfR3$Q9N3?VgS|?d z59X5B%sj?bT*~M&zswJlg6PqF6&L0-9p% zrqhi5jkb}}GC@_BGR0V3L9oHhqXxvik9Kof%jq?S>c}ipjJ4~79&dDU@ga8?n|uZL zneYsN7?B@O7ME;h;-5HOr}Voh8^m`~o()5e0WK<1E&|y@Zk|~^UKq9(hwIZ}xIj3- zzAb)U$i7Y!Kr?rS+Gc!^RL@e9!Kx^XW4IxoNRjwdgu>l9Tl6W^>W)3Gg>h~+#db=Q z3*%o8w$xTA6^#KF;%))edlKX)`ovk<^l@=Y<7?4hio>%;0l%UvqG|k%F(=V5 zqg0SIRS}2Du3Pi1N<^KKiuk3vgG4p%s5-FI7l+%ghH(SVgkwAJfT`6NWo7y)PF{a3 zK?}Ng2s`~Uz>!>uqyW_Qcp&OGOY$X;z4}KEfYv>bYj87x*;^~Et!oTgg6}jPRj<)` zpzWQ_tq+J3PbYw%ycCjBN&aLcVGODWVy7i`mts@wU08yJLBqw41Wg9;+1Q2a@UYX_7;-ut z6yz+_OkTUYi=)P^mY<2ER@ANm3gpT%Us{tN=jy2Me4&*cqPmY700nY$)?Hu*`PR+L@rpB)`G(~lfa_WR~5!?6?kmYl|qLzOWO z^P8G;8uffAB66qFem&Q8rZ!IfPR=u(b{7brMW*yAz^>j@Qwi)Dp3*1Y3i;><3pi7H z92z9lr&7HNO(VS^=6%~pxzLjKDZ3e z2vto{fhauvPVqxb-+kN6>C;ukBT)?V2jqY|eY&=Y7S!+OpGH$8!iOe<>8QeG5iX=@ z)XZ0xI&y`d6n-*3jqTbW2HXWbnchjUY7*3kWYc=_&tCKtI&|(%pL#Wu`%-&H-nhA2 zf@g4XSa`~S;{*q)Df2k*spyo!O(VEW^Fk>CAtN|{io9ZMmy()Z8zCL&Wg^m6&AO8& zI~1BTLu*oMrrge6n;yS;Ih0XVOxP#_A7F zncD>in#Ct9bt0a1%Ac-8j~1V-mKKPD-Etn3@uuix!P)kA!er4JmaR5tm?0la2tlkV zG$G*@+^Mh^&vP-*){KsLlMwF3;_$0Ao3Rqv>iNxa_}k=Y#2#hTE&VO|q(z@P)PmJS zv3IL?f!FWmLOtb)q~UNC6BynikcSO&??SMrqmZ}jB%b&dCi~lw6)~NX5>KqY(2TGw zPLuA`oJXIe#1m`L;|%uR>CqyS<=AatN~_6Z{Bb2dS#3H5WA8$`Taxo=5&XJXY{6vL h9GoM2pU`e>@d>&&XLtPBiS=cfsZmoRGzZ_k{D0j`+o%8l literal 0 HcmV?d00001 diff --git a/bundled-schema/DistributionDemo.sql b/schemas/bundled-schema/DistributionDemo.sql similarity index 100% rename from bundled-schema/DistributionDemo.sql rename to schemas/bundled-schema/DistributionDemo.sql diff --git a/bundled-schema/DivaShops.sql b/schemas/bundled-schema/DivaShops.sql similarity index 100% rename from bundled-schema/DivaShops.sql rename to schemas/bundled-schema/DivaShops.sql diff --git a/bundled-schema/EventQuests.sql b/schemas/bundled-schema/EventQuests.sql similarity index 100% rename from bundled-schema/EventQuests.sql rename to schemas/bundled-schema/EventQuests.sql diff --git a/bundled-schema/FPointItems.sql b/schemas/bundled-schema/FPointItems.sql similarity index 100% rename from bundled-schema/FPointItems.sql rename to schemas/bundled-schema/FPointItems.sql diff --git a/bundled-schema/FestaDefaults.sql b/schemas/bundled-schema/FestaDefaults.sql similarity index 100% rename from bundled-schema/FestaDefaults.sql rename to schemas/bundled-schema/FestaDefaults.sql diff --git a/bundled-schema/GachaDemo.sql b/schemas/bundled-schema/GachaDemo.sql similarity index 100% rename from bundled-schema/GachaDemo.sql rename to schemas/bundled-schema/GachaDemo.sql diff --git a/bundled-schema/NetcafeDefaults.sql b/schemas/bundled-schema/NetcafeDefaults.sql similarity index 100% rename from bundled-schema/NetcafeDefaults.sql rename to schemas/bundled-schema/NetcafeDefaults.sql diff --git a/bundled-schema/OtherShops.sql b/schemas/bundled-schema/OtherShops.sql similarity index 100% rename from bundled-schema/OtherShops.sql rename to schemas/bundled-schema/OtherShops.sql diff --git a/bundled-schema/RoadShopItems.sql b/schemas/bundled-schema/RoadShopItems.sql similarity index 100% rename from bundled-schema/RoadShopItems.sql rename to schemas/bundled-schema/RoadShopItems.sql diff --git a/bundled-schema/ScenarioDefaults.sql b/schemas/bundled-schema/ScenarioDefaults.sql similarity index 100% rename from bundled-schema/ScenarioDefaults.sql rename to schemas/bundled-schema/ScenarioDefaults.sql diff --git a/patch-schema/.gitkeep b/schemas/patch-schema/.gitkeep similarity index 100% rename from patch-schema/.gitkeep rename to schemas/patch-schema/.gitkeep diff --git a/patch-schema/00-psn-id.sql b/schemas/patch-schema/00-psn-id.sql similarity index 100% rename from patch-schema/00-psn-id.sql rename to schemas/patch-schema/00-psn-id.sql diff --git a/patch-schema/01-wiiu-key.sql b/schemas/patch-schema/01-wiiu-key.sql similarity index 100% rename from patch-schema/01-wiiu-key.sql rename to schemas/patch-schema/01-wiiu-key.sql diff --git a/patch-schema/02-tower.sql b/schemas/patch-schema/02-tower.sql similarity index 100% rename from patch-schema/02-tower.sql rename to schemas/patch-schema/02-tower.sql diff --git a/patch-schema/03-event_quests.sql b/schemas/patch-schema/03-event_quests.sql similarity index 100% rename from patch-schema/03-event_quests.sql rename to schemas/patch-schema/03-event_quests.sql diff --git a/patch-schema/04-trend-weapons.sql b/schemas/patch-schema/04-trend-weapons.sql similarity index 100% rename from patch-schema/04-trend-weapons.sql rename to schemas/patch-schema/04-trend-weapons.sql diff --git a/patch-schema/05-gacha-roll-name.sql b/schemas/patch-schema/05-gacha-roll-name.sql similarity index 100% rename from patch-schema/05-gacha-roll-name.sql rename to schemas/patch-schema/05-gacha-roll-name.sql diff --git a/patch-schema/06-goocoo-rename.sql b/schemas/patch-schema/06-goocoo-rename.sql similarity index 100% rename from patch-schema/06-goocoo-rename.sql rename to schemas/patch-schema/06-goocoo-rename.sql diff --git a/patch-schema/07-scenarios-counter.sql b/schemas/patch-schema/07-scenarios-counter.sql similarity index 100% rename from patch-schema/07-scenarios-counter.sql rename to schemas/patch-schema/07-scenarios-counter.sql diff --git a/patch-schema/08-kill-counts.sql b/schemas/patch-schema/08-kill-counts.sql similarity index 100% rename from patch-schema/08-kill-counts.sql rename to schemas/patch-schema/08-kill-counts.sql diff --git a/patch-schema/09-fix-guild-treasure.sql b/schemas/patch-schema/09-fix-guild-treasure.sql similarity index 100% rename from patch-schema/09-fix-guild-treasure.sql rename to schemas/patch-schema/09-fix-guild-treasure.sql diff --git a/patch-schema/10-rework-distributions.sql b/schemas/patch-schema/10-rework-distributions.sql similarity index 100% rename from patch-schema/10-rework-distributions.sql rename to schemas/patch-schema/10-rework-distributions.sql diff --git a/patch-schema/11-event-quest-flags.sql b/schemas/patch-schema/11-event-quest-flags.sql similarity index 100% rename from patch-schema/11-event-quest-flags.sql rename to schemas/patch-schema/11-event-quest-flags.sql diff --git a/patch-schema/12-event_quest_cycling.sql b/schemas/patch-schema/12-event_quest_cycling.sql similarity index 100% rename from patch-schema/12-event_quest_cycling.sql rename to schemas/patch-schema/12-event_quest_cycling.sql diff --git a/patch-schema/13-festa-trial-votes.sql b/schemas/patch-schema/13-festa-trial-votes.sql similarity index 100% rename from patch-schema/13-festa-trial-votes.sql rename to schemas/patch-schema/13-festa-trial-votes.sql diff --git a/patch-schema/14-fix-fpoint-trades.sql b/schemas/patch-schema/14-fix-fpoint-trades.sql similarity index 100% rename from patch-schema/14-fix-fpoint-trades.sql rename to schemas/patch-schema/14-fix-fpoint-trades.sql diff --git a/patch-schema/15-reset-goocoos.sql b/schemas/patch-schema/15-reset-goocoos.sql similarity index 100% rename from patch-schema/15-reset-goocoos.sql rename to schemas/patch-schema/15-reset-goocoos.sql diff --git a/patch-schema/16-discord-password-resets.sql b/schemas/patch-schema/16-discord-password-resets.sql similarity index 100% rename from patch-schema/16-discord-password-resets.sql rename to schemas/patch-schema/16-discord-password-resets.sql diff --git a/patch-schema/op-accounts.sql b/schemas/patch-schema/op-accounts.sql similarity index 100% rename from patch-schema/op-accounts.sql rename to schemas/patch-schema/op-accounts.sql diff --git a/patch-schema/psn-link.sql b/schemas/patch-schema/psn-link.sql similarity index 100% rename from patch-schema/psn-link.sql rename to schemas/patch-schema/psn-link.sql diff --git a/schemas/update-schema/9.2-update.sql b/schemas/update-schema/9.2-update.sql new file mode 100644 index 000000000..e7dbf699b --- /dev/null +++ b/schemas/update-schema/9.2-update.sql @@ -0,0 +1,241 @@ +BEGIN; + +DROP TABLE IF EXISTS public.fpoint_items; + +CREATE TABLE IF NOT EXISTS public.fpoint_items ( + id serial PRIMARY KEY, + item_type integer, + item_id integer, + quantity integer, + fpoints integer, + trade_type integer +); + +ALTER TABLE IF EXISTS public.characters ADD bonus_quests INT NOT NULL DEFAULT 0; + +ALTER TABLE IF EXISTS public.characters ADD daily_quests INT NOT NULL DEFAULT 0; + +ALTER TABLE IF EXISTS public.characters ADD promo_points INT NOT NULL DEFAULT 0; + +ALTER TABLE IF EXISTS public.guild_characters ADD rp_today INT DEFAULT 0; + +ALTER TABLE IF EXISTS public.guild_characters ADD rp_yesterday INT DEFAULT 0; + +UPDATE public.characters SET savemercenary = NULL; + +ALTER TABLE IF EXISTS public.characters ADD rasta_id INT; + +ALTER TABLE IF EXISTS public.characters ADD pact_id INT; + +ALTER TABLE IF EXISTS public.characters ADD stampcard INT NOT NULL DEFAULT 0; + +ALTER TABLE IF EXISTS public.characters DROP COLUMN IF EXISTS gacha_prem; + +ALTER TABLE IF EXISTS public.characters DROP COLUMN IF EXISTS gacha_trial; + +ALTER TABLE IF EXISTS public.characters DROP COLUMN IF EXISTS frontier_points; + +ALTER TABLE IF EXISTS public.users ADD IF NOT EXISTS gacha_premium INT; + +ALTER TABLE IF EXISTS public.users ADD IF NOT EXISTS gacha_trial INT; + +ALTER TABLE IF EXISTS public.users ADD IF NOT EXISTS frontier_points INT; + +DROP TABLE IF EXISTS public.gacha_shop; + +CREATE TABLE IF NOT EXISTS public.gacha_shop ( + id SERIAL PRIMARY KEY, + min_gr INTEGER, + min_hr INTEGER, + name TEXT, + url_banner TEXT, + url_feature TEXT, + url_thumbnail TEXT, + wide BOOLEAN, + recommended BOOLEAN, + gacha_type INTEGER, + hidden BOOLEAN +); + +DROP TABLE IF EXISTS public.gacha_shop_items; + +CREATE TABLE IF NOT EXISTS public.gacha_entries ( + id SERIAL PRIMARY KEY, + gacha_id INTEGER, + entry_type INTEGER, + item_type INTEGER, + item_number INTEGER, + item_quantity INTEGER, + weight INTEGER, + rarity INTEGER, + rolls INTEGER, + frontier_points INTEGER, + daily_limit INTEGER +); + +CREATE TABLE IF NOT EXISTS public.gacha_items ( + id SERIAL PRIMARY KEY, + entry_id INTEGER, + item_type INTEGER, + item_id INTEGER, + quantity INTEGER +); + +DROP TABLE IF EXISTS public.stepup_state; + +CREATE TABLE IF NOT EXISTS public.gacha_stepup ( + gacha_id INTEGER, + step INTEGER, + character_id INTEGER +); + +DROP TABLE IF EXISTS public.lucky_box_state; + +CREATE TABLE IF NOT EXISTS public.gacha_box ( + gacha_id INTEGER, + entry_id INTEGER, + character_id INTEGER +); + +DROP TABLE IF EXISTS public.login_boost_state; + +CREATE TABLE IF NOT EXISTS public.login_boost ( + char_id INTEGER, + week_req INTEGER, + expiration TIMESTAMP WITH TIME ZONE, + reset TIMESTAMP WITH TIME ZONE +); + +ALTER TABLE IF EXISTS public.characters ADD COLUMN mezfes BYTEA; + +ALTER TABLE IF EXISTS public.characters ALTER COLUMN daily_time TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.characters ALTER COLUMN guild_post_checked TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.characters ALTER COLUMN boost_time TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.characters ADD COLUMN IF NOT EXISTS cafe_reset TIMESTAMP WITHOUT TIME ZONE; + +ALTER TABLE IF EXISTS public.characters ALTER COLUMN cafe_reset TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.distribution ALTER COLUMN deadline TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.events ALTER COLUMN start_time TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.feature_weapon ALTER COLUMN start_time TYPE TIMESTAMP WITH TIME ZONE; + +CREATE TABLE IF NOT EXISTS public.feature_weapon +( + start_time TIMESTAMP WITH TIME ZONE NOT NULL, + featured INTEGER NOT NULL +); + +ALTER TABLE IF EXISTS public.guild_alliances ALTER COLUMN created_at TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.guild_applications ALTER COLUMN created_at TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.guild_characters ALTER COLUMN joined_at TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.guild_posts ALTER COLUMN created_at TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.characters ALTER COLUMN daily_time TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.guilds ALTER COLUMN created_at TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.mail ALTER COLUMN created_at TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.stamps ALTER COLUMN hl_next TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.stamps ALTER COLUMN ex_next TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.titles ALTER COLUMN unlocked_at TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.titles ALTER COLUMN updated_at TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.users ALTER COLUMN last_login TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.users ALTER COLUMN return_expires TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.guild_meals DROP COLUMN IF EXISTS expires; + +ALTER TABLE IF EXISTS public.guild_meals ADD COLUMN IF NOT EXISTS created_at TIMESTAMP WITH TIME ZONE; + +DROP TABLE IF EXISTS public.account_ban; + +DROP TABLE IF EXISTS public.account_history; + +DROP TABLE IF EXISTS public.account_moderation; + +DROP TABLE IF EXISTS public.account_sub; + +DROP TABLE IF EXISTS public.history; + +DROP TABLE IF EXISTS public.questlists; + +DROP TABLE IF EXISTS public.schema_migrations; + +DROP TABLE IF EXISTS public.user_binaries; + +DROP PROCEDURE IF EXISTS raviinit; + +DROP PROCEDURE IF EXISTS ravireset; + +ALTER TABLE IF EXISTS public.normal_shop_items RENAME TO shop_items; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN shoptype TO shop_type; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN shopid TO shop_id; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN itemhash TO id; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN itemid TO item_id; + +ALTER TABLE IF EXISTS public.shop_items ALTER COLUMN points TYPE integer; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN points TO cost; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN tradequantity TO quantity; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN rankreqlow TO min_hr; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN rankreqhigh TO min_sr; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN rankreqg TO min_gr; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN storelevelreq TO store_level; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN maximumquantity TO max_quantity; + +ALTER TABLE IF EXISTS public.shop_items DROP COLUMN IF EXISTS boughtquantity; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN roadfloorsrequired TO road_floors; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN weeklyfataliskills TO road_fatalis; + +ALTER TABLE public.shop_items RENAME CONSTRAINT normal_shop_items_pkey TO shop_items_pkey; + +ALTER TABLE IF EXISTS public.shop_items DROP CONSTRAINT IF EXISTS normal_shop_items_itemhash_key; + +CREATE SEQUENCE IF NOT EXISTS public.shop_items_id_seq; + +ALTER SEQUENCE IF EXISTS public.shop_items_id_seq OWNER TO postgres; + +ALTER TABLE IF EXISTS public.shop_items ALTER COLUMN id SET DEFAULT nextval('shop_items_id_seq'::regclass); + +ALTER SEQUENCE IF EXISTS public.shop_items_id_seq OWNED BY shop_items.id; + +SELECT setval('shop_items_id_seq', (SELECT MAX(id) FROM public.shop_items)); + +DROP TABLE IF EXISTS public.shop_item_state; + +CREATE TABLE IF NOT EXISTS public.shop_items_bought ( + character_id INTEGER, + shop_item_id INTEGER, + bought INTEGER +); + +UPDATE users SET rights = rights-2; + +ALTER TABLE IF EXISTS public.users ALTER COLUMN rights SET DEFAULT 12; + +END; \ No newline at end of file