gitscope
https://dev.kronoz.win/r/marzneshin.git
app/db/migrations/versions/20240115_20faa9f18c0a_init.py · nightly
Source
1 a47eb4c Dawsh 2y ago """Initiate Marzneshin database
2 a47eb4c Dawsh 2y ago
3 a47eb4c Dawsh 2y ago Revision ID: 20faa9f18c0a
4 a47eb4c Dawsh 2y ago Revises:
5 a47eb4c Dawsh 2y ago Create Date: 2024-01-15 09:48:24.808505
6 a47eb4c Dawsh 2y ago
7 a47eb4c Dawsh 2y ago """
8 6457378 Dawsh 2y ago
9 a47eb4c Dawsh 2y ago import os
10 a47eb4c Dawsh 2y ago from alembic import op
11 a47eb4c Dawsh 2y ago import sqlalchemy as sa
12 a47eb4c Dawsh 2y ago from app.utils.crypto import generate_certificate
13 a47eb4c Dawsh 2y ago
14 a47eb4c Dawsh 2y ago # revision identifiers, used by Alembic.
15 cba9caa Dawsh 2y ago revision = "20faa9f18c0a"
16 a47eb4c Dawsh 2y ago down_revision = None
17 a47eb4c Dawsh 2y ago branch_labels = None
18 a47eb4c Dawsh 2y ago depends_on = None
19 a47eb4c Dawsh 2y ago
20 a47eb4c Dawsh 2y ago
21 a47eb4c Dawsh 2y ago def upgrade() -> None:
22 a47eb4c Dawsh 2y ago # ### commands auto generated by Alembic - please adjust! ###
23 cba9caa Dawsh 2y ago op.create_table(
24 cba9caa Dawsh 2y ago "admins",
25 cba9caa Dawsh 2y ago sa.Column("id", sa.Integer(), nullable=False),
26 cba9caa Dawsh 2y ago sa.Column("username", sa.String(length=32), nullable=True),
27 cba9caa Dawsh 2y ago sa.Column("hashed_password", sa.String(length=128), nullable=True),
28 cba9caa Dawsh 2y ago sa.Column("created_at", sa.DateTime(), nullable=True),
29 cba9caa Dawsh 2y ago sa.Column("is_sudo", sa.Boolean(), nullable=True),
30 cba9caa Dawsh 2y ago sa.Column("password_reset_at", sa.DateTime(), nullable=True),
31 cba9caa Dawsh 2y ago sa.PrimaryKeyConstraint("id"),
32 cba9caa Dawsh 2y ago )
33 f1ab16c Dawsh 2y ago op.create_index(
34 f1ab16c Dawsh 2y ago op.f("ix_admins_username"), "admins", ["username"], unique=True
35 f1ab16c Dawsh 2y ago )
36 cba9caa Dawsh 2y ago
37 cba9caa Dawsh 2y ago jwttable = op.create_table(
38 cba9caa Dawsh 2y ago "jwt",
39 cba9caa Dawsh 2y ago sa.Column("id", sa.Integer(), nullable=False),
40 cba9caa Dawsh 2y ago sa.Column("secret_key", sa.String(length=64), nullable=False),
41 cba9caa Dawsh 2y ago sa.PrimaryKeyConstraint("id"),
42 a47eb4c Dawsh 2y ago )
43 a47eb4c Dawsh 2y ago op.bulk_insert(jwttable, [{"id": 1, "secret_key": os.urandom(32).hex()}])
44 a47eb4c Dawsh 2y ago
45 cba9caa Dawsh 2y ago nodestable = op.create_table(
46 cba9caa Dawsh 2y ago "nodes",
47 cba9caa Dawsh 2y ago sa.Column("id", sa.Integer(), nullable=False),
48 cba9caa Dawsh 2y ago sa.Column("name", sa.String(length=256), nullable=True),
49 cba9caa Dawsh 2y ago sa.Column("address", sa.String(length=256), nullable=True),
50 cba9caa Dawsh 2y ago sa.Column("port", sa.Integer(), nullable=True),
51 010b05d Dawsh 2y ago sa.Column("connection_backend", sa.String(32), nullable=True),
52 cba9caa Dawsh 2y ago sa.Column("xray_version", sa.String(length=32), nullable=True),
53 cba9caa Dawsh 2y ago sa.Column(
54 cba9caa Dawsh 2y ago "status",
55 cba9caa Dawsh 2y ago sa.Enum("healthy", "unhealthy", "disabled", name="nodestatus"),
56 cba9caa Dawsh 2y ago nullable=False,
57 cba9caa Dawsh 2y ago ),
58 cba9caa Dawsh 2y ago sa.Column("last_status_change", sa.DateTime(), nullable=True),
59 cba9caa Dawsh 2y ago sa.Column("message", sa.String(length=1024), nullable=True),
60 cba9caa Dawsh 2y ago sa.Column("created_at", sa.DateTime(), nullable=True),
61 cba9caa Dawsh 2y ago sa.Column("uplink", sa.BigInteger(), nullable=True),
62 cba9caa Dawsh 2y ago sa.Column("downlink", sa.BigInteger(), nullable=True),
63 cba9caa Dawsh 2y ago sa.Column(
64 cba9caa Dawsh 2y ago "usage_coefficient",
65 cba9caa Dawsh 2y ago sa.Float(),
66 cba9caa Dawsh 2y ago server_default=sa.text("(1.0)"),
67 cba9caa Dawsh 2y ago nullable=False,
68 cba9caa Dawsh 2y ago ),
69 cba9caa Dawsh 2y ago sa.PrimaryKeyConstraint("id"),
70 cba9caa Dawsh 2y ago sa.UniqueConstraint("name"),
71 cba9caa Dawsh 2y ago sa.UniqueConstraint("address", "port"),
72 cba9caa Dawsh 2y ago )
73 cba9caa Dawsh 2y ago op.bulk_insert(
74 cba9caa Dawsh 2y ago nodestable,
75 cba9caa Dawsh 2y ago [
76 cba9caa Dawsh 2y ago {
77 cba9caa Dawsh 2y ago "name": "local",
78 cba9caa Dawsh 2y ago "address": "127.0.0.1",
79 cba9caa Dawsh 2y ago "port": 53042,
80 cba9caa Dawsh 2y ago "connection_backend": "grpcio",
81 cba9caa Dawsh 2y ago "status": "unhealthy",
82 cba9caa Dawsh 2y ago }
83 cba9caa Dawsh 2y ago ],
84 cba9caa Dawsh 2y ago )
85 cba9caa Dawsh 2y ago op.create_table(
86 cba9caa Dawsh 2y ago "services",
87 cba9caa Dawsh 2y ago sa.Column("id", sa.Integer(), nullable=False),
88 cba9caa Dawsh 2y ago sa.Column("name", sa.String(length=64), nullable=True),
89 cba9caa Dawsh 2y ago sa.PrimaryKeyConstraint("id"),
90 a47eb4c Dawsh 2y ago )
91 6457378 Dawsh 2y ago
92 cba9caa Dawsh 2y ago systable = op.create_table(
93 cba9caa Dawsh 2y ago "system",
94 cba9caa Dawsh 2y ago sa.Column("id", sa.Integer(), nullable=False),
95 cba9caa Dawsh 2y ago sa.Column("uplink", sa.BigInteger(), nullable=True),
96 cba9caa Dawsh 2y ago sa.Column("downlink", sa.BigInteger(), nullable=True),
97 cba9caa Dawsh 2y ago sa.PrimaryKeyConstraint("id"),
98 a47eb4c Dawsh 2y ago )
99 a47eb4c Dawsh 2y ago op.bulk_insert(systable, [{"id": 1, "uplink": 0, "downlink": 0}])
100 6457378 Dawsh 2y ago
101 cba9caa Dawsh 2y ago tlstable = op.create_table(
102 cba9caa Dawsh 2y ago "tls",
103 cba9caa Dawsh 2y ago sa.Column("id", sa.Integer(), nullable=False),
104 cba9caa Dawsh 2y ago sa.Column("key", sa.String(length=4096), nullable=False),
105 cba9caa Dawsh 2y ago sa.Column("certificate", sa.String(length=2048), nullable=False),
106 cba9caa Dawsh 2y ago sa.PrimaryKeyConstraint("id"),
107 a47eb4c Dawsh 2y ago )
108 a47eb4c Dawsh 2y ago tls = generate_certificate()
109 f1ab16c Dawsh 2y ago op.bulk_insert(
110 f1ab16c Dawsh 2y ago tlstable, [{"id": 1, "key": tls["key"], "certificate": tls["cert"]}]
111 f1ab16c Dawsh 2y ago )
112 a47eb4c Dawsh 2y ago
113 cba9caa Dawsh 2y ago op.create_table(
114 cba9caa Dawsh 2y ago "inbounds",
115 cba9caa Dawsh 2y ago sa.Column("id", sa.Integer(), nullable=False),
116 cba9caa Dawsh 2y ago sa.Column(
117 cba9caa Dawsh 2y ago "protocol",
118 f1ab16c Dawsh 2y ago sa.Enum(
119 f1ab16c Dawsh 2y ago "VMess", "VLESS", "Trojan", "Shadowsocks", name="proxytypes"
120 f1ab16c Dawsh 2y ago ),
121 cba9caa Dawsh 2y ago nullable=True,
122 cba9caa Dawsh 2y ago ),
123 cba9caa Dawsh 2y ago sa.Column("tag", sa.String(length=256), nullable=False),
124 010b05d Dawsh 2y ago sa.Column("config", sa.String(512), nullable=False),
125 cba9caa Dawsh 2y ago sa.Column("node_id", sa.Integer(), nullable=True),
126 cba9caa Dawsh 2y ago sa.ForeignKeyConstraint(
127 cba9caa Dawsh 2y ago ["node_id"],
128 cba9caa Dawsh 2y ago ["nodes.id"],
129 cba9caa Dawsh 2y ago ),
130 cba9caa Dawsh 2y ago sa.PrimaryKeyConstraint("id"),
131 cba9caa Dawsh 2y ago sa.UniqueConstraint("node_id", "tag"),
132 cba9caa Dawsh 2y ago )
133 f1ab16c Dawsh 2y ago op.create_index(
134 f1ab16c Dawsh 2y ago op.f("ix_inbounds_node_id"), "inbounds", ["node_id"], unique=False
135 f1ab16c Dawsh 2y ago )
136 cba9caa Dawsh 2y ago op.create_table(
137 cba9caa Dawsh 2y ago "node_usages",
138 cba9caa Dawsh 2y ago sa.Column("id", sa.Integer(), nullable=False),
139 cba9caa Dawsh 2y ago sa.Column("created_at", sa.DateTime(), nullable=False),
140 cba9caa Dawsh 2y ago sa.Column("node_id", sa.Integer(), nullable=True),
141 cba9caa Dawsh 2y ago sa.Column("uplink", sa.BigInteger(), nullable=True),
142 cba9caa Dawsh 2y ago sa.Column("downlink", sa.BigInteger(), nullable=True),
143 cba9caa Dawsh 2y ago sa.ForeignKeyConstraint(
144 cba9caa Dawsh 2y ago ["node_id"],
145 cba9caa Dawsh 2y ago ["nodes.id"],
146 cba9caa Dawsh 2y ago ),
147 cba9caa Dawsh 2y ago sa.PrimaryKeyConstraint("id"),
148 cba9caa Dawsh 2y ago sa.UniqueConstraint("created_at", "node_id"),
149 cba9caa Dawsh 2y ago )
150 cba9caa Dawsh 2y ago op.create_table(
151 cba9caa Dawsh 2y ago "users",
152 cba9caa Dawsh 2y ago sa.Column("id", sa.Integer(), nullable=False),
153 cba9caa Dawsh 2y ago sa.Column("username", sa.String(length=32), nullable=True),
154 cba9caa Dawsh 2y ago sa.Column("key", sa.String(length=64), nullable=True),
155 cba9caa Dawsh 2y ago sa.Column(
156 cba9caa Dawsh 2y ago "status",
157 f1ab16c Dawsh 2y ago sa.Enum(
158 f1ab16c Dawsh 2y ago "active", "limited", "expired", "on_hold", name="userstatus"
159 f1ab16c Dawsh 2y ago ),
160 cba9caa Dawsh 2y ago nullable=False,
161 cba9caa Dawsh 2y ago ),
162 cba9caa Dawsh 2y ago sa.Column("used_traffic", sa.BigInteger(), nullable=True),
163 cba9caa Dawsh 2y ago sa.Column("data_limit", sa.BigInteger(), nullable=True),
164 cba9caa Dawsh 2y ago sa.Column(
165 cba9caa Dawsh 2y ago "data_limit_reset_strategy",
166 cba9caa Dawsh 2y ago sa.Enum(
167 cba9caa Dawsh 2y ago "no_reset",
168 cba9caa Dawsh 2y ago "day",
169 cba9caa Dawsh 2y ago "week",
170 cba9caa Dawsh 2y ago "month",
171 cba9caa Dawsh 2y ago "year",
172 cba9caa Dawsh 2y ago name="userdatalimitresetstrategy",
173 cba9caa Dawsh 2y ago ),
174 cba9caa Dawsh 2y ago nullable=False,
175 cba9caa Dawsh 2y ago ),
176 cba9caa Dawsh 2y ago sa.Column("ip_limit", sa.Integer(), nullable=False),
177 010b05d Dawsh 2y ago sa.Column("settings", sa.String(1024), nullable=True),
178 cba9caa Dawsh 2y ago sa.Column("expire", sa.DateTime(), nullable=True),
179 cba9caa Dawsh 2y ago sa.Column("admin_id", sa.Integer(), nullable=True),
180 cba9caa Dawsh 2y ago sa.Column("sub_updated_at", sa.DateTime(), nullable=True),
181 cba9caa Dawsh 2y ago sa.Column("sub_last_user_agent", sa.String(length=512), nullable=True),
182 cba9caa Dawsh 2y ago sa.Column("created_at", sa.DateTime(), nullable=True),
183 cba9caa Dawsh 2y ago sa.Column("note", sa.String(length=500), nullable=True),
184 cba9caa Dawsh 2y ago sa.Column("online_at", sa.DateTime(), nullable=True),
185 cba9caa Dawsh 2y ago sa.Column("on_hold_expire_duration", sa.BigInteger(), nullable=True),
186 cba9caa Dawsh 2y ago sa.Column("on_hold_timeout", sa.DateTime(), nullable=True),
187 cba9caa Dawsh 2y ago sa.Column("edit_at", sa.DateTime(), nullable=True),
188 cba9caa Dawsh 2y ago sa.ForeignKeyConstraint(
189 cba9caa Dawsh 2y ago ["admin_id"],
190 cba9caa Dawsh 2y ago ["admins.id"],
191 cba9caa Dawsh 2y ago ),
192 cba9caa Dawsh 2y ago sa.PrimaryKeyConstraint("id"),
193 cba9caa Dawsh 2y ago sa.UniqueConstraint("key"),
194 cba9caa Dawsh 2y ago )
195 f1ab16c Dawsh 2y ago op.create_index(
196 f1ab16c Dawsh 2y ago op.f("ix_users_username"), "users", ["username"], unique=True
197 f1ab16c Dawsh 2y ago )
198 cba9caa Dawsh 2y ago op.create_table(
199 cba9caa Dawsh 2y ago "hosts",
200 cba9caa Dawsh 2y ago sa.Column("id", sa.Integer(), nullable=False),
201 cba9caa Dawsh 2y ago sa.Column("remark", sa.String(length=256), nullable=False),
202 cba9caa Dawsh 2y ago sa.Column("address", sa.String(length=256), nullable=False),
203 cba9caa Dawsh 2y ago sa.Column("port", sa.Integer(), nullable=True),
204 cba9caa Dawsh 2y ago sa.Column("path", sa.String(length=256), nullable=True),
205 1fde8fd Dawsh 2y ago sa.Column("sni", sa.String(length=1024), nullable=True),
206 1fde8fd Dawsh 2y ago sa.Column("host", sa.String(length=1024), nullable=True),
207 cba9caa Dawsh 2y ago sa.Column(
208 cba9caa Dawsh 2y ago "security",
209 f1ab16c Dawsh 2y ago sa.Enum(
210 f1ab16c Dawsh 2y ago "inbound_default", "none", "tls", name="inboundhostsecurity"
211 f1ab16c Dawsh 2y ago ),
212 cba9caa Dawsh 2y ago nullable=False,
213 cba9caa Dawsh 2y ago ),
214 cba9caa Dawsh 2y ago sa.Column(
215 cba9caa Dawsh 2y ago "alpn",
216 f1ab16c Dawsh 2y ago sa.Enum(
217 f1ab16c Dawsh 2y ago "none", "h2", "http/1.1", "h2,http/1.1", name="proxyhostalpn"
218 f1ab16c Dawsh 2y ago ),
219 cba9caa Dawsh 2y ago server_default="none",
220 cba9caa Dawsh 2y ago nullable=False,
221 cba9caa Dawsh 2y ago ),
222 cba9caa Dawsh 2y ago sa.Column(
223 cba9caa Dawsh 2y ago "fingerprint",
224 cba9caa Dawsh 2y ago sa.Enum(
225 cba9caa Dawsh 2y ago "none",
226 cba9caa Dawsh 2y ago "chrome",
227 cba9caa Dawsh 2y ago "firefox",
228 cba9caa Dawsh 2y ago "safari",
229 cba9caa Dawsh 2y ago "ios",
230 cba9caa Dawsh 2y ago "android",
231 cba9caa Dawsh 2y ago "edge",
232 cba9caa Dawsh 2y ago "360",
233 cba9caa Dawsh 2y ago "qq",
234 cba9caa Dawsh 2y ago "random",
235 cba9caa Dawsh 2y ago "randomized",
236 cba9caa Dawsh 2y ago name="proxyhostfingerprint",
237 cba9caa Dawsh 2y ago ),
238 cba9caa Dawsh 2y ago server_default="none",
239 cba9caa Dawsh 2y ago nullable=False,
240 cba9caa Dawsh 2y ago ),
241 cba9caa Dawsh 2y ago sa.Column("inbound_id", sa.Integer(), nullable=False),
242 cba9caa Dawsh 2y ago sa.Column("allowinsecure", sa.Boolean(), nullable=True),
243 cba9caa Dawsh 2y ago sa.Column("is_disabled", sa.Boolean(), nullable=True),
244 cba9caa Dawsh 2y ago sa.ForeignKeyConstraint(
245 cba9caa Dawsh 2y ago ["inbound_id"],
246 cba9caa Dawsh 2y ago ["inbounds.id"],
247 cba9caa Dawsh 2y ago ),
248 cba9caa Dawsh 2y ago sa.PrimaryKeyConstraint("id"),
249 cba9caa Dawsh 2y ago )
250 cba9caa Dawsh 2y ago op.create_table(
251 cba9caa Dawsh 2y ago "inbounds_services",
252 cba9caa Dawsh 2y ago sa.Column("inbound_id", sa.Integer(), nullable=False),
253 cba9caa Dawsh 2y ago sa.Column("service_id", sa.Integer(), nullable=False),
254 cba9caa Dawsh 2y ago sa.ForeignKeyConstraint(
255 cba9caa Dawsh 2y ago ["inbound_id"],
256 cba9caa Dawsh 2y ago ["inbounds.id"],
257 cba9caa Dawsh 2y ago ),
258 cba9caa Dawsh 2y ago sa.ForeignKeyConstraint(
259 cba9caa Dawsh 2y ago ["service_id"],
260 cba9caa Dawsh 2y ago ["services.id"],
261 cba9caa Dawsh 2y ago ),
262 cba9caa Dawsh 2y ago sa.PrimaryKeyConstraint("inbound_id", "service_id"),
263 cba9caa Dawsh 2y ago )
264 cba9caa Dawsh 2y ago op.create_table(
265 cba9caa Dawsh 2y ago "node_user_usages",
266 cba9caa Dawsh 2y ago sa.Column("id", sa.Integer(), nullable=False),
267 cba9caa Dawsh 2y ago sa.Column("created_at", sa.DateTime(), nullable=False),
268 cba9caa Dawsh 2y ago sa.Column("user_id", sa.Integer(), nullable=True),
269 cba9caa Dawsh 2y ago sa.Column("node_id", sa.Integer(), nullable=True),
270 cba9caa Dawsh 2y ago sa.Column("used_traffic", sa.BigInteger(), nullable=True),
271 cba9caa Dawsh 2y ago sa.ForeignKeyConstraint(
272 cba9caa Dawsh 2y ago ["node_id"],
273 cba9caa Dawsh 2y ago ["nodes.id"],
274 cba9caa Dawsh 2y ago ),
275 cba9caa Dawsh 2y ago sa.ForeignKeyConstraint(
276 cba9caa Dawsh 2y ago ["user_id"],
277 cba9caa Dawsh 2y ago ["users.id"],
278 cba9caa Dawsh 2y ago ),
279 cba9caa Dawsh 2y ago sa.PrimaryKeyConstraint("id"),
280 cba9caa Dawsh 2y ago sa.UniqueConstraint("created_at", "user_id", "node_id"),
281 cba9caa Dawsh 2y ago )
282 cba9caa Dawsh 2y ago op.create_table(
283 cba9caa Dawsh 2y ago "notification_reminders",
284 cba9caa Dawsh 2y ago sa.Column("id", sa.Integer(), nullable=False),
285 cba9caa Dawsh 2y ago sa.Column("user_id", sa.Integer(), nullable=True),
286 cba9caa Dawsh 2y ago sa.Column(
287 cba9caa Dawsh 2y ago "type",
288 cba9caa Dawsh 2y ago sa.Enum("expiration_date", "data_usage", name="remindertype"),
289 cba9caa Dawsh 2y ago nullable=False,
290 cba9caa Dawsh 2y ago ),
291 cba9caa Dawsh 2y ago sa.Column("expires_at", sa.DateTime(), nullable=True),
292 cba9caa Dawsh 2y ago sa.Column("created_at", sa.DateTime(), nullable=True),
293 cba9caa Dawsh 2y ago sa.ForeignKeyConstraint(
294 cba9caa Dawsh 2y ago ["user_id"],
295 cba9caa Dawsh 2y ago ["users.id"],
296 cba9caa Dawsh 2y ago ),
297 cba9caa Dawsh 2y ago sa.PrimaryKeyConstraint("id"),
298 cba9caa Dawsh 2y ago )
299 cba9caa Dawsh 2y ago op.create_table(
300 cba9caa Dawsh 2y ago "user_usage_logs",
301 cba9caa Dawsh 2y ago sa.Column("id", sa.Integer(), nullable=False),
302 cba9caa Dawsh 2y ago sa.Column("user_id", sa.Integer(), nullable=True),
303 cba9caa Dawsh 2y ago sa.Column("used_traffic_at_reset", sa.BigInteger(), nullable=False),
304 cba9caa Dawsh 2y ago sa.Column("reset_at", sa.DateTime(), nullable=True),
305 cba9caa Dawsh 2y ago sa.ForeignKeyConstraint(
306 cba9caa Dawsh 2y ago ["user_id"],
307 cba9caa Dawsh 2y ago ["users.id"],
308 cba9caa Dawsh 2y ago ),
309 cba9caa Dawsh 2y ago sa.PrimaryKeyConstraint("id"),
310 cba9caa Dawsh 2y ago )
311 cba9caa Dawsh 2y ago op.create_table(
312 cba9caa Dawsh 2y ago "users_services",
313 cba9caa Dawsh 2y ago sa.Column("user_id", sa.Integer(), nullable=False),
314 cba9caa Dawsh 2y ago sa.Column("service_id", sa.Integer(), nullable=False),
315 cba9caa Dawsh 2y ago sa.ForeignKeyConstraint(
316 cba9caa Dawsh 2y ago ["service_id"],
317 cba9caa Dawsh 2y ago ["services.id"],
318 cba9caa Dawsh 2y ago ),
319 cba9caa Dawsh 2y ago sa.ForeignKeyConstraint(
320 cba9caa Dawsh 2y ago ["user_id"],
321 cba9caa Dawsh 2y ago ["users.id"],
322 cba9caa Dawsh 2y ago ),
323 cba9caa Dawsh 2y ago sa.PrimaryKeyConstraint("user_id", "service_id"),
324 a47eb4c Dawsh 2y ago )
325 a47eb4c Dawsh 2y ago # ### end Alembic commands ###
326 a47eb4c Dawsh 2y ago
327 a47eb4c Dawsh 2y ago
328 a47eb4c Dawsh 2y ago def downgrade() -> None:
329 a47eb4c Dawsh 2y ago # ### commands auto generated by Alembic - please adjust! ###
330 cba9caa Dawsh 2y ago op.drop_table("users_services")
331 cba9caa Dawsh 2y ago op.drop_table("user_usage_logs")
332 cba9caa Dawsh 2y ago op.drop_table("notification_reminders")
333 cba9caa Dawsh 2y ago op.drop_table("node_user_usages")
334 cba9caa Dawsh 2y ago op.drop_table("inbounds_services")
335 cba9caa Dawsh 2y ago op.drop_table("hosts")
336 cba9caa Dawsh 2y ago op.drop_index(op.f("ix_users_username"), table_name="users")
337 cba9caa Dawsh 2y ago op.drop_table("users")
338 cba9caa Dawsh 2y ago op.drop_table("node_usages")
339 cba9caa Dawsh 2y ago op.drop_index(op.f("ix_inbounds_node_id"), table_name="inbounds")
340 cba9caa Dawsh 2y ago op.drop_table("inbounds")
341 cba9caa Dawsh 2y ago op.drop_table("tls")
342 cba9caa Dawsh 2y ago op.drop_table("system")
343 cba9caa Dawsh 2y ago op.drop_table("services")
344 cba9caa Dawsh 2y ago op.drop_table("nodes")
345 cba9caa Dawsh 2y ago op.drop_table("jwt")
346 cba9caa Dawsh 2y ago op.drop_index(op.f("ix_admins_username"), table_name="admins")
347 cba9caa Dawsh 2y ago op.drop_table("admins")
348 a47eb4c Dawsh 2y ago # ### end Alembic commands ###