Skip to content

Commit d00d5fa

Browse files
BeyondMagicMillenaQueirozNanashii76R-enanVieira
committed
fix(procedures): refactor with correct tables and types
Co-authored-by: Millena Queiroz <[email protected]> Co-authored-by: Paulo H. Lamounier <[email protected]> Co-authored-by: Renan Vieira <[email protected]>
1 parent e277fe0 commit d00d5fa

File tree

8 files changed

+114
-89
lines changed

8 files changed

+114
-89
lines changed

src/__init__.py

+10-7
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@
55
import utils
66

77
def main():
8+
print("lol")
89

9-
sqls = {
10-
"./source/database/ddl/types.sql",
11-
"./source/database/ddl/tables.sql",
12-
"./source/database/dml/procedures.sql",
13-
"./source/database/dml/triggers.sql"
14-
}
10+
sqls = [
11+
"./src/database/ddl/types.sql",
12+
"./src/database/ddl/tables.sql",
13+
"./src/database/dml/procedures.sql",
14+
"./src/database/dml/triggers.sql"
15+
]
1516

1617
db = Database("localhost", "postgres", "postgres", "123456")
1718

@@ -47,4 +48,6 @@ def init_database():
4748
exit(0)
4849

4950
while logic.game(db.conn, character):
50-
pass
51+
pass
52+
53+
main()

src/database/data/npc/citizen/merchants.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -12,31 +12,28 @@ def merchants(db: Database):
1212
"Jason",
1313
12,
1414
"Jason é um importante mercador de acessórios e itens mágicos.",
15-
None,
1615
"""Bem-vindo, aventureiro! O que você deseja comprar?
1716
Tenho uma variedade de itens mágicos e acessórios de qualidade!"""
1817
),
1918
(
2019
"Nico",
2120
18,
2221
"Nico é um antigo vendedor de poções",
23-
None,
2422
"""Olá, aventureiro! O que você deseja comprar?
2523
Tenho uma variedade de poções para suas necessidades!"""
2624
),
2725
(
2826
"Luna",
2927
32,
3028
"Luna é uma mercadora de itens mágicos",
31-
None,
3229
"""Olá, aventureiro! Vejo que conseguiu chegar até aqui.
3330
Mundo perigoso, não é mesmo? Mas não se preocupe, tenho os itens mágicos perfeitos para você!"""
3431
)
3532
]
3633

3734
db.cur.executemany(
3835
"""
39-
SELECT criar_mercador(%s, %s::INT, %s, %s::INT, %s)
36+
SELECT criar_mercador(%s, %s::INT, %s, %s)
4037
""", mercadores
4138
)
4239

src/database/data/storage/storage.py

+10-3
Original file line numberDiff line numberDiff line change
@@ -31,18 +31,25 @@ def storage(item_name: str, quantity: int, db: Database) -> int:
3131

3232
def populate_storage(db: Database):
3333

34+
default_quantity = 9999
35+
3436
table_name = Style.BRIGHT + "ARMAZENAMENTO" + Style.NORMAL
3537

3638
try:
37-
db.cur.execute("SELECT nome FROM item;")
39+
db.cur.execute(f"""
40+
SELECT id FROM item
41+
""")
3842
items = db.cur.fetchall()
3943

4044
if not items:
4145
debug("Nenhum item encontrado no banco de dados.")
4246
return
4347

44-
for (item_name,) in items:
45-
storage(item_name, 9999, db)
48+
for (id,) in items:
49+
db.cur.execute(f"""
50+
INSERT INTO armazenamento(item_id, quantidade)
51+
VALUES ({id}, {default_quantity});
52+
""")
4653

4754
db.conn.commit()
4855
debug(f"default: {len(table_name)} {table_name} added successfully!")

src/database/ddl/tables.sql

+49-31
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
11
CREATE TABLE item (
22
id SERIAL PRIMARY KEY,
3-
tipo TIPO_ITEM NOT NULL,
4-
descricao TEXT NOT NULL,
5-
-- É o numero de inimigos que você tem que matar para conseguir o item.
6-
-- Chance de drop: O cálculo é: 1 / drop_inimigos_media.
7-
drop_inimigos_media INT NOT NULL CHECK (drop_inimigos_media >= 0),
8-
nome VARCHAR(200) NOT NULL,
9-
peso INT NOT NULL CHECK (peso >= 0),
10-
preco INT NOT NULL CHECK (preco >= 0)
3+
tipo TIPO_ITEM NOT NULL
114
);
125

136
CREATE TABLE armazenamento (
@@ -63,21 +56,21 @@ CREATE TABLE inventario (
6356

6457
CREATE TABLE npc (
6558
id SERIAL PRIMARY KEY,
66-
nome VARCHAR(100) NOT NULL,
6759
tipo TIPO_NPC NOT NULL
6860
);
6961

7062
CREATE TABLE civil (
7163
id INT NOT NULL PRIMARY KEY REFERENCES npc(id),
7264
sub_regiao_id INT NOT NULL REFERENCES sub_regiao(id),
73-
descricao TEXT NOT NULL,
74-
tipo TIPO_CIVIL NOT NULL
65+
tipo TIPO_CIVIL NOT NULL,
66+
nome VARCHAR(100) NOT NULL,
67+
descricao TEXT NOT NULL
7568
);
7669

7770
CREATE TABLE quester (
7871
id INT NOT NULL PRIMARY KEY REFERENCES npc(id),
79-
dialogo TEXT NOT NULL,
80-
num_quests INT NOT NULL CHECK (num_quests >= 0)
72+
num_quests INT NOT NULL CHECK (num_quests >= 0),
73+
dialogo TEXT NOT NULL
8174
);
8275

8376
CREATE TABLE quest (
@@ -97,15 +90,8 @@ CREATE TABLE quest_instancia (
9790
completed BOOLEAN NOT NULL
9891
);
9992

100-
CREATE TABLE item_instancia (
101-
id SERIAL PRIMARY KEY,
102-
item_id INT NOT NULL REFERENCES item(id),
103-
inventario_id INT NOT NULL REFERENCES inventario(id)
104-
);
105-
10693
CREATE TABLE mercador (
10794
id INT NOT NULL PRIMARY KEY REFERENCES npc(id),
108-
armazenamento_id INT REFERENCES armazenamento(id),
10995
dialogo TEXT NOT NULL
11096
);
11197

@@ -127,13 +113,14 @@ CREATE TABLE mochila (
127113
peso_total INT NOT NULL CHECK (peso_total >= 0)
128114
);
129115

116+
CREATE TABLE item_instancia (
117+
id SERIAL PRIMARY KEY,
118+
item_id INT NOT NULL REFERENCES item(id),
119+
mochila_id INT NOT NULL REFERENCES mochila(id)
120+
);
121+
130122
CREATE TABLE feitico (
131123
id SERIAL PRIMARY KEY,
132-
descricao TEXT NOT NULL,
133-
elemento TIPO_ELEMENTO NOT NULL,
134-
countdown INT NOT NULL CHECK (countdown >= 0),
135-
conhecimento_arcano_necessario INT NOT NULL CHECK (conhecimento_arcano_necessario >= 0),
136-
energia_arcana INT NOT NULL CHECK (energia_arcana >= 0),
137124
tipo TIPO_FEITICO NOT NULL
138125
);
139126

@@ -144,18 +131,33 @@ CREATE TABLE feitico_requerimento (
144131

145132
CREATE TABLE feitico_dano (
146133
id INT PRIMARY KEY REFERENCES feitico(id),
147-
dano_total INT NOT NULL CHECK (dano_total >= 0)
134+
dano_total INT NOT NULL CHECK (dano_total >= 0),
135+
descricao TEXT NOT NULL,
136+
elemento TIPO_ELEMENTO NOT NULL,
137+
countdown INT NOT NULL CHECK (countdown >= 0),
138+
conhecimento_arcano_necessario INT NOT NULL CHECK (conhecimento_arcano_necessario >= 0),
139+
energia_arcana INT NOT NULL CHECK (energia_arcana >= 0)
148140
);
149141

150142
CREATE TABLE feitico_dano_area (
151143
id INT PRIMARY KEY REFERENCES feitico(id),
152144
dano INT NOT NULL CHECK (dano >= 0),
153-
qtd_inimigos_afetados INT NOT NULL CHECK (qtd_inimigos_afetados >= 0)
145+
qtd_inimigos_afetados INT NOT NULL CHECK (qtd_inimigos_afetados >= 0),
146+
descricao TEXT NOT NULL,
147+
elemento TIPO_ELEMENTO NOT NULL,
148+
countdown INT NOT NULL CHECK (countdown >= 0),
149+
conhecimento_arcano_necessario INT NOT NULL CHECK (conhecimento_arcano_necessario >= 0),
150+
energia_arcana INT NOT NULL CHECK (energia_arcana >= 0)
154151
);
155152

156153
CREATE TABLE feitico_cura (
157154
id INT PRIMARY KEY REFERENCES feitico(id),
158-
qtd_cura INT NOT NULL CHECK (qtd_cura >= 0)
155+
qtd_cura INT NOT NULL CHECK (qtd_cura >= 0),
156+
descricao TEXT NOT NULL,
157+
elemento TIPO_ELEMENTO NOT NULL,
158+
countdown INT NOT NULL CHECK (countdown >= 0),
159+
conhecimento_arcano_necessario INT NOT NULL CHECK (conhecimento_arcano_necessario >= 0),
160+
energia_arcana INT NOT NULL CHECK (energia_arcana >= 0)
159161
);
160162

161163
CREATE TABLE grimorio (
@@ -171,7 +173,12 @@ CREATE TABLE feitico_aprendido (
171173

172174
CREATE TABLE pergaminho (
173175
id INT PRIMARY KEY REFERENCES item(id),
174-
cor VARCHAR(10) NOT NULL
176+
cor VARCHAR(10) NOT NULL,
177+
descricao TEXT NOT NULL,
178+
drop_inimigos_media INT NOT NULL CHECK (drop_inimigos_media >= 0),
179+
nome VARCHAR(200) NOT NULL,
180+
peso INT NOT NULL CHECK (peso >= 0),
181+
preco INT NOT NULL CHECK (preco >= 0)
175182
);
176183

177184
CREATE TABLE feitico_escrito (
@@ -195,7 +202,12 @@ CREATE TABLE efeito (
195202

196203
CREATE TABLE acessorio (
197204
id INT PRIMARY KEY REFERENCES item(id),
198-
tipo TIPO_ACESSORIO NOT NULL
205+
tipo TIPO_ACESSORIO NOT NULL,
206+
descricao TEXT NOT NULL,
207+
drop_inimigos_media INT NOT NULL CHECK (drop_inimigos_media >= 0),
208+
nome VARCHAR(200) NOT NULL,
209+
peso INT NOT NULL CHECK (peso >= 0),
210+
preco INT NOT NULL CHECK (preco >= 0)
199211
);
200212

201213
CREATE TABLE sub_regiao_acessorio_conexao (
@@ -212,7 +224,12 @@ CREATE TABLE acessorio_efeito (
212224
CREATE TABLE pocao (
213225
id INT PRIMARY KEY REFERENCES item(id),
214226
turnos INT NOT NULL CHECK (turnos >= 0),
215-
usado BOOLEAN NOT NULL
227+
usado BOOLEAN NOT NULL,
228+
descricao TEXT NOT NULL,
229+
drop_inimigos_media INT NOT NULL CHECK (drop_inimigos_media >= 0),
230+
nome VARCHAR(200) NOT NULL,
231+
peso INT NOT NULL CHECK (peso >= 0),
232+
preco INT NOT NULL CHECK (preco >= 0)
216233
);
217234

218235
CREATE TABLE pocao_efeito (
@@ -222,6 +239,7 @@ CREATE TABLE pocao_efeito (
222239

223240
CREATE TABLE inimigo (
224241
id INT NOT NULL PRIMARY KEY REFERENCES npc(id),
242+
nome VARCHAR(100) NOT NULL,
225243
descricao TEXT NOT NULL,
226244
elemento TIPO_ELEMENTO NOT NULL,
227245
vida_maxima INT NOT NULL CHECK (vida_maxima >= 0),

0 commit comments

Comments
 (0)