forked from Skynet/discord-bot
feat: got migrations working!!!!
This commit is contained in:
parent
480fc9b1a0
commit
a9f55da04d
4 changed files with 45 additions and 52 deletions
|
@ -21,7 +21,7 @@ surf = "2.3.2"
|
|||
dotenvy = "0.15.7"
|
||||
|
||||
# For sqlite
|
||||
sqlx = { version = "0.7.1", features = [ "runtime-tokio", "sqlite" ] }
|
||||
sqlx = { version = "0.7.1", features = [ "runtime-tokio", "sqlite", "migrate" ] }
|
||||
|
||||
# create random strings
|
||||
rand = "0.8.5"
|
||||
|
|
38
db/migrations/1_setup.sql
Normal file
38
db/migrations/1_setup.sql
Normal file
|
@ -0,0 +1,38 @@
|
|||
-- setup initial tables
|
||||
|
||||
-- this handles the users "floating" account
|
||||
CREATE TABLE IF NOT EXISTS wolves (
|
||||
id_wolves integer PRIMARY KEY,
|
||||
email text not null,
|
||||
discord integer,
|
||||
minecraft text
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS index_discord ON wolves (discord);
|
||||
|
||||
-- used to verify the users email address
|
||||
CREATE TABLE IF NOT EXISTS wolves_verify (
|
||||
discord integer PRIMARY KEY,
|
||||
email text not null,
|
||||
auth_code text not null,
|
||||
date_expiry text not null
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS index_date_expiry ON wolves_verify (date_expiry);
|
||||
|
||||
-- information on teh server the bot is registered on
|
||||
CREATE TABLE IF NOT EXISTS servers (
|
||||
server integer PRIMARY KEY,
|
||||
wolves_api text not null,
|
||||
role_past integer,
|
||||
role_current integer,
|
||||
member_past integer DEFAULT 0,
|
||||
member_current integer DEFAULT 0
|
||||
);
|
||||
|
||||
-- keep track of the members on the server
|
||||
CREATE TABLE IF NOT EXISTS server_members (
|
||||
server integer not null,
|
||||
id_wolves integer not null,
|
||||
expiry text not null,
|
||||
PRIMARY KEY(server,id_wolves),
|
||||
FOREIGN KEY (id_wolves) REFERENCES wolves (id_wolves)
|
||||
);
|
3
db/migrations/2_minecraft-server.sql
Normal file
3
db/migrations/2_minecraft-server.sql
Normal file
|
@ -0,0 +1,3 @@
|
|||
-- add teh option to associate each discord server with a minecraft one managed by skynet
|
||||
ALTER TABLE servers
|
||||
ADD server_minecraft text;
|
54
src/lib.rs
54
src/lib.rs
|
@ -269,57 +269,9 @@ pub async fn db_init(config: &Config) -> Result<Pool<Sqlite>, Error> {
|
|||
)
|
||||
.await?;
|
||||
|
||||
sqlx::query(
|
||||
"CREATE TABLE IF NOT EXISTS wolves (
|
||||
id_wolves integer PRIMARY KEY,
|
||||
email text not null,
|
||||
discord integer,
|
||||
minecraft text
|
||||
)",
|
||||
)
|
||||
.execute(&pool)
|
||||
.await?;
|
||||
|
||||
sqlx::query("CREATE INDEX IF NOT EXISTS index_discord ON wolves (discord)").execute(&pool).await?;
|
||||
|
||||
sqlx::query(
|
||||
"CREATE TABLE IF NOT EXISTS wolves_verify (
|
||||
discord integer PRIMARY KEY,
|
||||
email text not null,
|
||||
auth_code text not null,
|
||||
date_expiry text not null
|
||||
)",
|
||||
)
|
||||
.execute(&pool)
|
||||
.await?;
|
||||
|
||||
sqlx::query("CREATE INDEX IF NOT EXISTS index_date_expiry ON wolves_verify (date_expiry)")
|
||||
.execute(&pool)
|
||||
.await?;
|
||||
|
||||
sqlx::query(
|
||||
"CREATE TABLE IF NOT EXISTS server_members (
|
||||
server integer not null,
|
||||
id_wolves integer not null,
|
||||
expiry text not null,
|
||||
PRIMARY KEY(server,id_wolves),
|
||||
FOREIGN KEY (id_wolves) REFERENCES wolves (id_wolves)
|
||||
)",
|
||||
)
|
||||
.execute(&pool)
|
||||
.await?;
|
||||
|
||||
sqlx::query(
|
||||
"CREATE TABLE IF NOT EXISTS servers (
|
||||
server integer PRIMARY KEY,
|
||||
wolves_api text not null,
|
||||
role_past integer,
|
||||
role_current integer,
|
||||
member_past integer DEFAULT 0,
|
||||
member_current integer DEFAULT 0
|
||||
)",
|
||||
)
|
||||
.execute(&pool)
|
||||
// migrations are amazing!
|
||||
sqlx::migrate!("./db/migrations")
|
||||
.run(&pool)
|
||||
.await?;
|
||||
|
||||
Ok(pool)
|
||||
|
|
Loading…
Reference in a new issue