embed migrations

This commit is contained in:
2022-03-24 14:31:13 +08:00
parent cd940d59ba
commit aabe18f5a4
4 changed files with 39 additions and 16 deletions

View File

@@ -9,12 +9,12 @@ license = "AGPL-3.0"
[dependencies]
rocket = { version = "0.5.0-rc.1", features = ["json"] }
diesel = { version = "1.4.8", features = ["postgres", "chrono"] }
diesel_migrations = "1.4.0"
redis = { version="0.21.5", features = ["aio", "tokio-comp"] }
chrono = { version="0.*", features =["serde"] }
rand = "0.*"
dotenv = "0.*"
sha2 = "0.*"
diesel_logger = "0.1.1"
log = "0.4.16"
env_logger = "0.9.0"

View File

@@ -5,20 +5,22 @@
### prepare database
```sql
CREATE USER hole CREATEDB;
ALTER USER hole WITH PASSWORD "hole_pass";
```
sudo -u postgres psql
```
```postgresql
postgres=# CREATE USER hole WITH PASSWORD 'hole_pass';
CREATE ROLE
postgres=# CREATE DATABASE hole_v2 OWNER hole;
CREATE DATABASE
postgres=# \c hole_v2
You are now connected to database "hole_v2" as user "postgres".
hole_v2=# CREATE EXTENSION pg_trgm;
CREATE EXTENSION
hole_v2=# \q
```
```
$ diesel setup
```
```sql
\c hole_v2
CREATE EXTENSION pg_trgm;
```
```
$ diesel run
./hole-thu --init-database
```

View File

@@ -4,6 +4,9 @@ extern crate rocket;
#[macro_use]
extern crate diesel;
#[macro_use]
extern crate diesel_migrations;
#[macro_use]
extern crate log;
@@ -17,13 +20,21 @@ mod rds_models;
mod cache;
mod schema;
use db_conn::Db;
use db_conn::{Conn, Db};
use diesel::Connection;
use random_hasher::RandomHasher;
use rds_conn::init_rds_client;
use std::env;
embed_migrations!("migrations/postgres");
#[rocket::main]
async fn main() -> Result<(), rocket::Error> {
load_env();
if env::args().any(|arg| arg.eq("--init-database")) {
init_database();
return Ok(());
}
env_logger::init();
rocket::build()
.mount(
@@ -58,3 +69,9 @@ fn load_env() {
e => e.map(|_| ()).unwrap(),
}
}
fn init_database() {
let database_url = env::var("DATABASE_URL").unwrap();
let conn = Conn::establish(&database_url).unwrap();
embedded_migrations::run(&conn).unwrap();
}

View File

@@ -42,4 +42,8 @@ table! {
joinable!(comments -> posts (post_id));
allow_tables_to_appear_in_same_query!(comments, posts, users,);
allow_tables_to_appear_in_same_query!(
comments,
posts,
users,
);