Skip to content

Commit 01c6e63

Browse files
committed
feat: migrations
1 parent bae792b commit 01c6e63

File tree

5 files changed

+249
-0
lines changed

5 files changed

+249
-0
lines changed

botbase/piccolo_app.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
"""
2+
Import all of the Tables subclasses in your app here, and register them with
3+
the APP_CONFIG.
4+
"""
5+
6+
import os
7+
8+
from piccolo.conf.apps import AppConfig, table_finder
9+
10+
11+
CURRENT_DIRECTORY = os.path.dirname(os.path.abspath(__file__))
12+
13+
14+
APP_CONFIG = AppConfig(
15+
app_name="botbase",
16+
migrations_folder_path=os.path.join(CURRENT_DIRECTORY, "piccolo_migrations"),
17+
table_classes=table_finder(modules=["botbase.db"], exclude_imported=False),
18+
migration_dependencies=[],
19+
commands=[],
20+
)

botbase/piccolo_migrations/__init__.py

Whitespace-only changes.
Lines changed: 204 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,204 @@
1+
from piccolo.apps.migrations.auto.migration_manager import MigrationManager
2+
from piccolo.columns.column_types import BigInt
3+
from piccolo.columns.column_types import Integer
4+
from piccolo.columns.column_types import Text
5+
from piccolo.columns.indexes import IndexMethod
6+
7+
8+
ID = "2023-05-23T00:19:45:350876"
9+
VERSION = "0.111.1"
10+
DESCRIPTION = "Add initial tables"
11+
12+
13+
async def forwards():
14+
manager = MigrationManager(
15+
migration_id=ID, app_name="botbase", description=DESCRIPTION
16+
)
17+
18+
manager.add_table("BlacklistGuild", tablename="blacklist_guild")
19+
20+
manager.add_table("BlacklistUser", tablename="blacklist_user")
21+
22+
manager.add_table("CommandLog", tablename="command_log")
23+
24+
manager.add_column(
25+
table_class_name="BlacklistGuild",
26+
tablename="blacklist_guild",
27+
column_name="id",
28+
db_column_name="id",
29+
column_class_name="BigInt",
30+
column_class=BigInt,
31+
params={
32+
"default": 0,
33+
"null": False,
34+
"primary_key": True,
35+
"unique": False,
36+
"index": False,
37+
"index_method": IndexMethod.btree,
38+
"choices": None,
39+
"db_column_name": None,
40+
"secret": False,
41+
},
42+
)
43+
44+
manager.add_column(
45+
table_class_name="BlacklistGuild",
46+
tablename="blacklist_guild",
47+
column_name="reason",
48+
db_column_name="reason",
49+
column_class_name="Text",
50+
column_class=Text,
51+
params={
52+
"default": "Unknown reason.",
53+
"null": False,
54+
"primary_key": False,
55+
"unique": False,
56+
"index": False,
57+
"index_method": IndexMethod.btree,
58+
"choices": None,
59+
"db_column_name": None,
60+
"secret": False,
61+
},
62+
)
63+
64+
manager.add_column(
65+
table_class_name="BlacklistUser",
66+
tablename="blacklist_user",
67+
column_name="id",
68+
db_column_name="id",
69+
column_class_name="BigInt",
70+
column_class=BigInt,
71+
params={
72+
"default": 0,
73+
"null": False,
74+
"primary_key": True,
75+
"unique": False,
76+
"index": False,
77+
"index_method": IndexMethod.btree,
78+
"choices": None,
79+
"db_column_name": None,
80+
"secret": False,
81+
},
82+
)
83+
84+
manager.add_column(
85+
table_class_name="BlacklistUser",
86+
tablename="blacklist_user",
87+
column_name="reason",
88+
db_column_name="reason",
89+
column_class_name="Text",
90+
column_class=Text,
91+
params={
92+
"default": "Unknown reason.",
93+
"null": False,
94+
"primary_key": False,
95+
"unique": False,
96+
"index": False,
97+
"index_method": IndexMethod.btree,
98+
"choices": None,
99+
"db_column_name": None,
100+
"secret": False,
101+
},
102+
)
103+
104+
manager.add_column(
105+
table_class_name="CommandLog",
106+
tablename="command_log",
107+
column_name="command",
108+
db_column_name="command",
109+
column_class_name="Text",
110+
column_class=Text,
111+
params={
112+
"default": "",
113+
"null": False,
114+
"primary_key": True,
115+
"unique": False,
116+
"index": False,
117+
"index_method": IndexMethod.btree,
118+
"choices": None,
119+
"db_column_name": None,
120+
"secret": False,
121+
},
122+
)
123+
124+
manager.add_column(
125+
table_class_name="CommandLog",
126+
tablename="command_log",
127+
column_name="guild",
128+
db_column_name="guild",
129+
column_class_name="BigInt",
130+
column_class=BigInt,
131+
params={
132+
"default": 0,
133+
"null": False,
134+
"primary_key": False,
135+
"unique": False,
136+
"index": False,
137+
"index_method": IndexMethod.btree,
138+
"choices": None,
139+
"db_column_name": None,
140+
"secret": False,
141+
},
142+
)
143+
144+
manager.add_column(
145+
table_class_name="CommandLog",
146+
tablename="command_log",
147+
column_name="channel",
148+
db_column_name="channel",
149+
column_class_name="BigInt",
150+
column_class=BigInt,
151+
params={
152+
"default": 0,
153+
"null": False,
154+
"primary_key": False,
155+
"unique": False,
156+
"index": False,
157+
"index_method": IndexMethod.btree,
158+
"choices": None,
159+
"db_column_name": None,
160+
"secret": False,
161+
},
162+
)
163+
164+
manager.add_column(
165+
table_class_name="CommandLog",
166+
tablename="command_log",
167+
column_name="member",
168+
db_column_name="member",
169+
column_class_name="BigInt",
170+
column_class=BigInt,
171+
params={
172+
"default": 0,
173+
"null": False,
174+
"primary_key": False,
175+
"unique": False,
176+
"index": False,
177+
"index_method": IndexMethod.btree,
178+
"choices": None,
179+
"db_column_name": None,
180+
"secret": False,
181+
},
182+
)
183+
184+
manager.add_column(
185+
table_class_name="CommandLog",
186+
tablename="command_log",
187+
column_name="amount",
188+
db_column_name="amount",
189+
column_class_name="Integer",
190+
column_class=Integer,
191+
params={
192+
"default": 1,
193+
"null": False,
194+
"primary_key": False,
195+
"unique": False,
196+
"index": False,
197+
"index_method": IndexMethod.btree,
198+
"choices": None,
199+
"db_column_name": None,
200+
"secret": False,
201+
},
202+
)
203+
204+
return manager

docker-compose.dev.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
version: "3"
2+
3+
# export DB_URI=postgresql://postgres:postgres@localhost:5432/bot
4+
# docker-compose -f docker-compose.dev.yml up -d
5+
# docker-compose -f docker-compose.dev.yml down *should* remove data
6+
services:
7+
postgres:
8+
image: postgres:15
9+
restart: unless-stopped
10+
environment:
11+
POSTGRES_PASSWORD: postgres
12+
POSTGRES_USER: postgres
13+
POSTGRES_DB: bot
14+
PGDATA: /var/lib/postgresql/data/pgdata
15+
ports:
16+
- 5432:5432

piccolo_conf.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from piccolo.conf.apps import AppRegistry
2+
from piccolo.engine.postgres import PostgresEngine
3+
4+
DB = PostgresEngine(config={"dsn": "postgresql://postgres:postgres@localhost:5432/bot"})
5+
6+
7+
# A list of paths to piccolo apps
8+
# e.g. ['blog.piccolo_app']
9+
APP_REGISTRY = AppRegistry(apps=["botbase.piccolo_app"])

0 commit comments

Comments
 (0)