Updated schemas
This commit is contained in:
parent
55395d279e
commit
6322736baf
@ -1,10 +1,10 @@
|
|||||||
create table "members" (
|
CREATE TABLE "members" (
|
||||||
id varchar(7) primary key,
|
member_id varchar(7) NOT NULL PRIMARY KEY,
|
||||||
first_name text not null,
|
first_name text NOT NULL,
|
||||||
full_name text not null,
|
full_name text NOT NULL,
|
||||||
registration_token text unique not null,
|
registration_token text NOT NULL UNIQUE,
|
||||||
diploma text,
|
diploma text,
|
||||||
hours text[] not null,
|
hours text[] NOT NULL,
|
||||||
groups text[] not null
|
groups text[] NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
13
server/migrations/002_create_users.sql
Normal file
13
server/migrations/002_create_users.sql
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
CREATE TABLE "users" (
|
||||||
|
user_id uuid NOT NULL PRIMARY KEY,
|
||||||
|
email text UNIQUE,
|
||||||
|
password text NOT NULL,
|
||||||
|
admin boolean NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS users_members (
|
||||||
|
user_id uuid NOT NULL REFERENCES users (user_id) ON UPDATE cascade ON DELETE cascade,
|
||||||
|
member_id varchar(7) NOT NULL REFERENCES members (member_id) ON UPDATE cascade ON DELETE cascade,
|
||||||
|
|
||||||
|
CONSTRAINT users_members_pkey PRIMARY KEY (user_id, member_id)
|
||||||
|
);
|
@ -5,7 +5,7 @@ use validator::Validate;
|
|||||||
#[derive(Debug, Validate)]
|
#[derive(Debug, Validate)]
|
||||||
pub struct Member {
|
pub struct Member {
|
||||||
#[validate(length(equal = 7))]
|
#[validate(length(equal = 7))]
|
||||||
pub id: String,
|
pub member_id: String,
|
||||||
pub first_name: String,
|
pub first_name: String,
|
||||||
pub full_name: String,
|
pub full_name: String,
|
||||||
pub registration_token: Option<String>,
|
pub registration_token: Option<String>,
|
||||||
@ -36,13 +36,13 @@ impl Member {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let mut query_builder = QueryBuilder::new(
|
let mut query_builder = QueryBuilder::new(
|
||||||
"INSERT INTO members(id, first_name, full_name, registration_token, diploma, hours, groups) "
|
"INSERT INTO members(member_id, first_name, full_name, registration_token, diploma, hours, groups) "
|
||||||
);
|
);
|
||||||
|
|
||||||
query_builder.push_values(members.into_iter(), |mut b, member| {
|
query_builder.push_values(members.into_iter(), |mut b, member| {
|
||||||
let registration_token = Alphanumeric.sample_string(&mut rand::rng(), 16);
|
let registration_token = Alphanumeric.sample_string(&mut rand::rng(), 16);
|
||||||
|
|
||||||
b.push_bind(member.id);
|
b.push_bind(member.member_id);
|
||||||
b.push_bind(member.first_name);
|
b.push_bind(member.first_name);
|
||||||
b.push_bind(member.full_name);
|
b.push_bind(member.full_name);
|
||||||
b.push_bind(registration_token);
|
b.push_bind(registration_token);
|
||||||
@ -66,7 +66,7 @@ impl Member {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for member in members {
|
for member in members {
|
||||||
sqlx::query!("UPDATE ONLY members SET first_name = $1, full_name = $2, diploma = $3, hours = $4, groups = $5 WHERE id = $6", member.first_name, member.full_name, member.diploma, &member.hours, &member.groups, member.id).execute(&mut **transaction).await?;
|
sqlx::query!("UPDATE ONLY members SET first_name = $1, full_name = $2, diploma = $3, hours = $4, groups = $5 WHERE member_id = $6", member.first_name, member.full_name, member.diploma, &member.hours, &member.groups, member.member_id).execute(&mut **transaction).await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -78,7 +78,7 @@ impl Member {
|
|||||||
) -> Result<(), sqlx::Error> {
|
) -> Result<(), sqlx::Error> {
|
||||||
sqlx::query!(
|
sqlx::query!(
|
||||||
"
|
"
|
||||||
DELETE FROM members WHERE id = ANY($1)
|
DELETE FROM members WHERE member_id = ANY($1)
|
||||||
",
|
",
|
||||||
member_ids
|
member_ids
|
||||||
)
|
)
|
||||||
|
@ -18,7 +18,7 @@ use crate::database::model::Member as DbMember;
|
|||||||
impl From<DbMember> for Member {
|
impl From<DbMember> for Member {
|
||||||
fn from(value: DbMember) -> Self {
|
fn from(value: DbMember) -> Self {
|
||||||
Member {
|
Member {
|
||||||
id: value.id,
|
id: value.member_id,
|
||||||
name: Name {
|
name: Name {
|
||||||
first: value.first_name,
|
first: value.first_name,
|
||||||
full: value.full_name,
|
full: value.full_name,
|
||||||
@ -34,7 +34,7 @@ impl From<DbMember> for Member {
|
|||||||
impl From<Member> for DbMember {
|
impl From<Member> for DbMember {
|
||||||
fn from(value: Member) -> Self {
|
fn from(value: Member) -> Self {
|
||||||
DbMember {
|
DbMember {
|
||||||
id: value.id,
|
member_id: value.id,
|
||||||
first_name: value.name.first,
|
first_name: value.name.first,
|
||||||
full_name: value.name.full,
|
full_name: value.name.full,
|
||||||
registration_token: None,
|
registration_token: None,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user