Skip to content

Commit 3544b91

Browse files
committed
remove email field from dump
- `do_nothing` on `emails` insertion violates unique constraint on `user_id`
1 parent 5ef002d commit 3544b91

File tree

3 files changed

+5
-3
lines changed

3 files changed

+5
-3
lines changed
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
CREATE FUNCTION update_categories_crates_cnt() RETURNS trigger AS $$ BEGIN IF (TG_OP = 'INSERT') THEN UPDATE categories SET crates_cnt = crates_cnt + 1 WHERE id = NEW.category_id; return NEW; ELSIF (TG_OP = 'DELETE') THEN UPDATE categories SET crates_cnt = crates_cnt - 1 WHERE id = OLD.category_id; return OLD; END IF; END $$ LANGUAGE plpgsql; CREATE TRIGGER trigger_update_categories_crates_cnt BEFORE INSERT OR DELETE ON crates_categories FOR EACH ROW EXECUTE PROCEDURE update_categories_crates_cnt(); CREATE TRIGGER touch_crate_on_modify_categories AFTER INSERT OR DELETE ON crates_categories FOR EACH ROW EXECUTE PROCEDURE touch_crate();
1+
CREATE FUNCTION update_categories_crates_cnt() RETURNS trigger AS $$ BEGIN IF (TG_OP = 'INSERT') THEN UPDATE categories SET crates_cnt = crates_cnt + 1 WHERE id = NEW.category_id; return NEW; ELSIF (TG_OP = 'DELETE') THEN UPDATE categories SET crates_cnt = crates_cnt - 1 WHERE id = OLD.category_id; return OLD; END IF; END $$ LANGUAGE plpgsql; CREATE TRIGGER trigger_update_categories_crates_cnt BEFORE INSERT OR DELETE ON crates_categories FOR EACH ROW EXECUTE PROCEDURE update_categories_crates_cnt(); CREATE TRIGGER touch_crate_on_modify_categories AFTER INSERT OR DELETE ON crates_categories FOR EACH ROW EXECUTE PROCEDURE touch_crate();

src/models/user.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ impl<'a> NewUser<'a> {
5454
email: Option<&'a str>,
5555
conn: &PgConnection,
5656
) -> QueryResult<User> {
57+
use crate::schema::emails::columns::user_id;
5758
use crate::schema::users::dsl::*;
5859
use diesel::dsl::sql;
5960
use diesel::insert_into;
@@ -90,7 +91,9 @@ impl<'a> NewUser<'a> {
9091

9192
let token = insert_into(emails::table)
9293
.values(&new_email)
93-
.on_conflict_do_nothing()
94+
.on_conflict(user_id)
95+
.do_update()
96+
.set(&new_email)
9497
.returning(emails::token)
9598
.get_result::<String>(conn)
9699
.optional()?;

src/tasks/dump_db/dump-db.toml

-1
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,6 @@ id in (
165165
)"""
166166
[users.columns]
167167
id = "public"
168-
email = "private"
169168
gh_access_token = "private"
170169
gh_login = "public"
171170
name = "public"

0 commit comments

Comments
 (0)