embed migrations
This commit is contained in:
@@ -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"
|
||||
|
||||
|
||||
28
README.md
28
README.md
@@ -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
|
||||
```
|
||||
|
||||
19
src/main.rs
19
src/main.rs
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user