blob: 200b70a83a09366556e87dcb8c43b3ecf7cb8d6a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
use errors::*;
use diesel;
use diesel::prelude::*;
use database_models::*;
use database_schema::{editgroup, editor};
pub fn get_or_create_editgroup(editor_id: i64, conn: &PgConnection) -> Result<i64> {
// check for current active
let ed_row: EditorRow = editor::table.find(editor_id).first(conn)?;
if let Some(current) = ed_row.active_editgroup_id {
return Ok(current);
}
// need to insert and update
conn.build_transaction().run(|| {
let eg_row: EditgroupRow = diesel::insert_into(editgroup::table)
.values((
editgroup::editor_id.eq(ed_row.id),
))
.get_result(conn)?;
diesel::update(editor::table.find(ed_row.id))
.set(editor::active_editgroup_id.eq(eg_row.id))
.execute(conn)?;
Ok(eg_row.id)
})
}
|