23 changed files with 188 additions and 38 deletions
@ -1,2 +1,25 @@
|
||||
# hole-backend-rust |
||||
|
||||
|
||||
## 部署 |
||||
|
||||
### prepare database |
||||
|
||||
```sql |
||||
CREATE USER hole CREATEDB; |
||||
ALTER USER hole WITH PASSWORD "hole_pass"; |
||||
``` |
||||
|
||||
``` |
||||
$ diesel setup |
||||
``` |
||||
|
||||
```sql |
||||
\c hole_v2 |
||||
CREATE EXTENSION pg_trgm; |
||||
``` |
||||
|
||||
``` |
||||
$ diesel run |
||||
$ python3 tools/migdb.py |
||||
``` |
||||
|
@ -0,0 +1,6 @@
|
||||
-- This file was automatically created by Diesel to setup helper functions |
||||
-- and other internal bookkeeping. This file is safe to edit, any future |
||||
-- changes will be added to existing projects as new migrations. |
||||
|
||||
DROP FUNCTION IF EXISTS diesel_manage_updated_at(_tbl regclass); |
||||
DROP FUNCTION IF EXISTS diesel_set_updated_at(); |
@ -0,0 +1,36 @@
|
||||
-- This file was automatically created by Diesel to setup helper functions |
||||
-- and other internal bookkeeping. This file is safe to edit, any future |
||||
-- changes will be added to existing projects as new migrations. |
||||
|
||||
|
||||
|
||||
|
||||
-- Sets up a trigger for the given table to automatically set a column called |
||||
-- `updated_at` whenever the row is modified (unless `updated_at` was included |
||||
-- in the modified columns) |
||||
-- |
||||
-- # Example |
||||
-- |
||||
-- ```sql |
||||
-- CREATE TABLE users (id SERIAL PRIMARY KEY, updated_at TIMESTAMP NOT NULL DEFAULT NOW()); |
||||
-- |
||||
-- SELECT diesel_manage_updated_at('users'); |
||||
-- ``` |
||||
CREATE OR REPLACE FUNCTION diesel_manage_updated_at(_tbl regclass) RETURNS VOID AS $$ |
||||
BEGIN |
||||
EXECUTE format('CREATE TRIGGER set_updated_at BEFORE UPDATE ON %s |
||||
FOR EACH ROW EXECUTE PROCEDURE diesel_set_updated_at()', _tbl); |
||||
END; |
||||
$$ LANGUAGE plpgsql; |
||||
|
||||
CREATE OR REPLACE FUNCTION diesel_set_updated_at() RETURNS trigger AS $$ |
||||
BEGIN |
||||
IF ( |
||||
NEW IS DISTINCT FROM OLD AND |
||||
NEW.updated_at IS NOT DISTINCT FROM OLD.updated_at |
||||
) THEN |
||||
NEW.updated_at := current_timestamp; |
||||
END IF; |
||||
RETURN NEW; |
||||
END; |
||||
$$ LANGUAGE plpgsql; |
@ -0,0 +1,2 @@
|
||||
-- This file should undo anything in `up.sql` |
||||
DROP TABLE posts; |
@ -0,0 +1,23 @@
|
||||
-- Your SQL goes here |
||||
CREATE TABLE posts ( |
||||
id SERIAL PRIMARY KEY, |
||||
author_hash VARCHAR NOT NULL, |
||||
content TEXT NOT NULL, |
||||
cw VARCHAR NOT NULL DEFAULT '', |
||||
author_title VARCHAR NOT NULL DEFAULT '', |
||||
is_tmp BOOLEAN NOT NULL DEFAULT FALSE, |
||||
n_attentions INTEGER NOT NULL DEFAULT 0, |
||||
n_comments INTEGER NOT NULL DEFAULT 0, |
||||
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, |
||||
last_comment_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, |
||||
is_deleted BOOLEAN NOT NULL DEFAULT FALSE, |
||||
is_reported BOOLEAN NOT NULL DEFAULT FALSE, |
||||
hot_score INTEGER NOT NULL DEFAULT 0, |
||||
allow_search BOOLEAN NOT NULL DEFAULT FALSE |
||||
); |
||||
|
||||
CREATE INDEX posts_last_comment_time_idx ON posts (last_comment_time); |
||||
CREATE INDEX posts_hot_idx ON posts (hot_score); |
||||
CREATE INDEX posts_author_idx ON posts (author_title); |
||||
CREATE INDEX posts_cw_idx ON posts (cw); |
||||
CREATE INDEX posts_search_text_trgm_idx ON posts USING gin(content gin_trgm_ops); |
@ -0,0 +1,2 @@
|
||||
-- This file should undo anything in `up.sql` |
||||
DROP TABLE users; |
@ -0,0 +1,7 @@
|
||||
-- Your SQL goes here |
||||
CREATE TABLE users ( |
||||
id SERIAL PRIMARY KEY, |
||||
name VARCHAR NOT NULL UNIQUE, |
||||
token VARCHAR NOT NULL UNIQUE, |
||||
is_admin BOOLEAN NOT NULL DEFAULT FALSE |
||||
); |
@ -0,0 +1,2 @@
|
||||
-- This file should undo anything in `up.sql` |
||||
DROP TABLE comments; |
@ -0,0 +1,14 @@
|
||||
-- Your SQL goes here |
||||
CREATE TABLE comments ( |
||||
id SERIAL PRIMARY KEY, |
||||
author_hash VARCHAR NOT NULL, |
||||
author_title VARCHAR NOT NULL DEFAULT '', |
||||
is_tmp BOOLEAN NOT NULL DEFAULT FALSE, |
||||
content TEXT NOT NULL, |
||||
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, |
||||
is_deleted BOOLEAN NOT NULL DEFAULT FALSE, |
||||
allow_search BOOLEAN NOT NULL DEFAULT FALSE, |
||||
post_id INTEGER NOT NULL REFERENCES posts(id) |
||||
); |
||||
CREATE INDEX comments_postId_idx ON comments (post_id); |
||||
|
@ -1,7 +1,7 @@
|
||||
use rocket_sync_db_pools::{database, diesel}; |
||||
|
||||
pub type Conn = diesel::SqliteConnection; |
||||
pub type Conn = diesel::pg::PgConnection; |
||||
|
||||
#[database("sqlite_v2")] |
||||
#[database("pg_v2")] |
||||
pub struct Db(Conn); |
||||
|
||||
|
Loading…
Reference in new issue