Handle new fields
This commit is contained in:
parent
b04f73cb51
commit
4be0f69511
@ -31,7 +31,7 @@ pub(crate) async fn all_account_orders(
|
|||||||
) -> Result<Vec<AccountOrder>> {
|
) -> Result<Vec<AccountOrder>> {
|
||||||
sqlx::query_as(
|
sqlx::query_as(
|
||||||
r#"
|
r#"
|
||||||
SELECT id, buyer_id, status
|
SELECT id, buyer_id, status, order_id
|
||||||
FROM account_orders
|
FROM account_orders
|
||||||
"#,
|
"#,
|
||||||
)
|
)
|
||||||
@ -48,6 +48,7 @@ FROM account_orders
|
|||||||
pub struct CreateAccountOrder {
|
pub struct CreateAccountOrder {
|
||||||
pub buyer_id: AccountId,
|
pub buyer_id: AccountId,
|
||||||
pub status: OrderStatus,
|
pub status: OrderStatus,
|
||||||
|
pub order_id: Option<OrderId>,
|
||||||
}
|
}
|
||||||
|
|
||||||
db_async_handler!(CreateAccountOrder, create_account_order, AccountOrder);
|
db_async_handler!(CreateAccountOrder, create_account_order, AccountOrder);
|
||||||
@ -58,13 +59,49 @@ pub(crate) async fn create_account_order(
|
|||||||
) -> Result<AccountOrder> {
|
) -> Result<AccountOrder> {
|
||||||
sqlx::query_as(
|
sqlx::query_as(
|
||||||
r#"
|
r#"
|
||||||
INSERT INTO account_orders (buyer_id, status)
|
INSERT INTO account_orders (buyer_id, status, order_id)
|
||||||
VALUES ($1, $2)
|
VALUES ($1, $2, $3)
|
||||||
RETURNING id, buyer_id, status
|
RETURNING id, buyer_id, status, order_id
|
||||||
"#,
|
"#,
|
||||||
)
|
)
|
||||||
.bind(msg.buyer_id)
|
.bind(msg.buyer_id)
|
||||||
.bind(msg.status)
|
.bind(msg.status)
|
||||||
|
.bind(msg.order_id)
|
||||||
|
.fetch_one(&db)
|
||||||
|
.await
|
||||||
|
.map_err(|e| {
|
||||||
|
log::error!("{e:?}");
|
||||||
|
super::Error::AccountOrder(Error::CantCreate)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(actix::Message)]
|
||||||
|
#[rtype(result = "Result<AccountOrder>")]
|
||||||
|
pub struct UpdateAccountOrder {
|
||||||
|
pub id: AccountOrderId,
|
||||||
|
pub buyer_id: AccountId,
|
||||||
|
pub status: OrderStatus,
|
||||||
|
pub order_id: Option<OrderId>,
|
||||||
|
}
|
||||||
|
|
||||||
|
db_async_handler!(UpdateAccountOrder, update_account_order, AccountOrder);
|
||||||
|
|
||||||
|
pub(crate) async fn update_account_order(
|
||||||
|
msg: UpdateAccountOrder,
|
||||||
|
db: PgPool,
|
||||||
|
) -> Result<AccountOrder> {
|
||||||
|
sqlx::query_as(
|
||||||
|
r#"
|
||||||
|
UPDATE account_orders
|
||||||
|
SET buyer_id = $2 AND status = $3 AND order_id = $4
|
||||||
|
WHERE id = $1
|
||||||
|
RETURNING id, buyer_id, status, order_id
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.bind(msg.id)
|
||||||
|
.bind(msg.buyer_id)
|
||||||
|
.bind(msg.status)
|
||||||
|
.bind(msg.order_id)
|
||||||
.fetch_one(&db)
|
.fetch_one(&db)
|
||||||
.await
|
.await
|
||||||
.map_err(|e| {
|
.map_err(|e| {
|
||||||
@ -84,7 +121,7 @@ db_async_handler!(FindAccountOrder, find_account_order, AccountOrder);
|
|||||||
pub(crate) async fn find_account_order(msg: FindAccountOrder, db: PgPool) -> Result<AccountOrder> {
|
pub(crate) async fn find_account_order(msg: FindAccountOrder, db: PgPool) -> Result<AccountOrder> {
|
||||||
sqlx::query_as(
|
sqlx::query_as(
|
||||||
r#"
|
r#"
|
||||||
SELECT id, buyer_id, status
|
SELECT id, buyer_id, status, order_id
|
||||||
FROM account_orders
|
FROM account_orders
|
||||||
WHERE id = $1
|
WHERE id = $1
|
||||||
"#,
|
"#,
|
||||||
|
@ -28,7 +28,7 @@ db_async_handler!(AllAccounts, all_accounts, Vec<FullAccount>);
|
|||||||
pub(crate) async fn all_accounts(_msg: AllAccounts, pool: PgPool) -> Result<Vec<FullAccount>> {
|
pub(crate) async fn all_accounts(_msg: AllAccounts, pool: PgPool) -> Result<Vec<FullAccount>> {
|
||||||
sqlx::query_as(
|
sqlx::query_as(
|
||||||
r#"
|
r#"
|
||||||
SELECT id, email, login, pass_hash, role
|
SELECT id, email, login, pass_hash, role, customer_id
|
||||||
FROM accounts
|
FROM accounts
|
||||||
"#,
|
"#,
|
||||||
)
|
)
|
||||||
@ -56,7 +56,40 @@ pub(crate) async fn create_account(msg: CreateAccount, db: PgPool) -> Result<Ful
|
|||||||
r#"
|
r#"
|
||||||
INSERT INTO accounts (login, email, role, pass_hash)
|
INSERT INTO accounts (login, email, role, pass_hash)
|
||||||
VALUES ($1, $2, $3, $4)
|
VALUES ($1, $2, $3, $4)
|
||||||
RETURNING id, email, login, pass_hash, role
|
RETURNING id, email, login, pass_hash, role, customer_id
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.bind(msg.login)
|
||||||
|
.bind(msg.email)
|
||||||
|
.bind(msg.role)
|
||||||
|
.bind(msg.pass_hash)
|
||||||
|
.fetch_one(&db)
|
||||||
|
.await
|
||||||
|
.map_err(|e| {
|
||||||
|
log::error!("{e:?}");
|
||||||
|
super::Error::Account(Error::CantCreate)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(actix::Message)]
|
||||||
|
#[rtype(result = "Result<FullAccount>")]
|
||||||
|
pub struct UpdateAccount {
|
||||||
|
pub id: AccountId,
|
||||||
|
pub email: Email,
|
||||||
|
pub login: Login,
|
||||||
|
pub pass_hash: PassHash,
|
||||||
|
pub role: Role,
|
||||||
|
}
|
||||||
|
|
||||||
|
db_async_handler!(UpdateAccount, update_account, FullAccount);
|
||||||
|
|
||||||
|
pub(crate) async fn update_account(msg: UpdateAccount, db: PgPool) -> Result<FullAccount> {
|
||||||
|
sqlx::query_as(
|
||||||
|
r#"
|
||||||
|
UPDATE accounts
|
||||||
|
SET login = $2 AND email = $3 AND role = $4 AND pass_hash = $5
|
||||||
|
WHERE id = $1
|
||||||
|
RETURNING id, email, login, pass_hash, role, customer_id
|
||||||
"#,
|
"#,
|
||||||
)
|
)
|
||||||
.bind(msg.login)
|
.bind(msg.login)
|
||||||
@ -82,7 +115,7 @@ db_async_handler!(FindAccount, find_account, FullAccount);
|
|||||||
pub(crate) async fn find_account(msg: FindAccount, db: PgPool) -> Result<FullAccount> {
|
pub(crate) async fn find_account(msg: FindAccount, db: PgPool) -> Result<FullAccount> {
|
||||||
sqlx::query_as(
|
sqlx::query_as(
|
||||||
r#"
|
r#"
|
||||||
SELECT id, email, login, pass_hash, role
|
SELECT id, email, login, pass_hash, role, customer_id
|
||||||
FROM accounts
|
FROM accounts
|
||||||
WHERE id = $1
|
WHERE id = $1
|
||||||
"#,
|
"#,
|
||||||
@ -109,7 +142,7 @@ pub(crate) async fn account_by_identity(msg: AccountByIdentity, db: PgPool) -> R
|
|||||||
match (msg.login, msg.email) {
|
match (msg.login, msg.email) {
|
||||||
(Some(login), None) => sqlx::query_as(
|
(Some(login), None) => sqlx::query_as(
|
||||||
r#"
|
r#"
|
||||||
SELECT id, email, login, pass_hash, role
|
SELECT id, email, login, pass_hash, role, customer_id
|
||||||
FROM accounts
|
FROM accounts
|
||||||
WHERE login = $1
|
WHERE login = $1
|
||||||
"#,
|
"#,
|
||||||
@ -117,7 +150,7 @@ WHERE login = $1
|
|||||||
.bind(login),
|
.bind(login),
|
||||||
(None, Some(email)) => sqlx::query_as(
|
(None, Some(email)) => sqlx::query_as(
|
||||||
r#"
|
r#"
|
||||||
SELECT id, email, login, pass_hash, role
|
SELECT id, email, login, pass_hash, role, customer_id
|
||||||
FROM accounts
|
FROM accounts
|
||||||
WHERE email = $1
|
WHERE email = $1
|
||||||
"#,
|
"#,
|
||||||
@ -125,7 +158,7 @@ WHERE email = $1
|
|||||||
.bind(email),
|
.bind(email),
|
||||||
(Some(login), Some(email)) => sqlx::query_as(
|
(Some(login), Some(email)) => sqlx::query_as(
|
||||||
r#"
|
r#"
|
||||||
SELECT id, email, login, pass_hash, role
|
SELECT id, email, login, pass_hash, role, customer_id
|
||||||
FROM accounts
|
FROM accounts
|
||||||
WHERE login = $1 AND email = $2
|
WHERE login = $1 AND email = $2
|
||||||
"#,
|
"#,
|
||||||
|
@ -306,6 +306,7 @@ pub struct FullAccount {
|
|||||||
pub login: Login,
|
pub login: Login,
|
||||||
pub pass_hash: PassHash,
|
pub pass_hash: PassHash,
|
||||||
pub role: Role,
|
pub role: Role,
|
||||||
|
pub customer_id: uuid::Uuid,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(sqlx::FromRow, Serialize, Deserialize)]
|
#[derive(sqlx::FromRow, Serialize, Deserialize)]
|
||||||
@ -314,11 +315,14 @@ pub struct Account {
|
|||||||
pub email: Email,
|
pub email: Email,
|
||||||
pub login: Login,
|
pub login: Login,
|
||||||
pub role: Role,
|
pub role: Role,
|
||||||
|
pub customer_id: uuid::Uuid,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<FullAccount> for Account {
|
impl From<FullAccount> for Account {
|
||||||
fn from(FullAccount { id, email, login, pass_hash: _, role }: FullAccount) -> Self {
|
fn from(
|
||||||
Self { id, email, login, role }
|
FullAccount { id, email, login, pass_hash: _, role, customer_id }: FullAccount,
|
||||||
|
) -> Self {
|
||||||
|
Self { id, email, login, role, customer_id }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -375,13 +379,19 @@ pub struct Stock {
|
|||||||
#[derive(sqlx::Type, Serialize, Deserialize, Deref)]
|
#[derive(sqlx::Type, Serialize, Deserialize, Deref)]
|
||||||
#[sqlx(transparent)]
|
#[sqlx(transparent)]
|
||||||
#[serde(transparent)]
|
#[serde(transparent)]
|
||||||
pub struct AccountOrderId(pub RecordId);
|
pub struct AccountOrderId(RecordId);
|
||||||
|
|
||||||
|
#[derive(sqlx::Type, Serialize, Deserialize, Deref)]
|
||||||
|
#[sqlx(transparent)]
|
||||||
|
#[serde(transparent)]
|
||||||
|
pub struct OrderId(String);
|
||||||
|
|
||||||
#[derive(sqlx::FromRow, Serialize, Deserialize)]
|
#[derive(sqlx::FromRow, Serialize, Deserialize)]
|
||||||
pub struct AccountOrder {
|
pub struct AccountOrder {
|
||||||
pub id: AccountOrderId,
|
pub id: AccountOrderId,
|
||||||
pub buyer_id: AccountId,
|
pub buyer_id: AccountId,
|
||||||
pub status: OrderStatus,
|
pub status: OrderStatus,
|
||||||
|
pub order_id: Option<OrderId>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(sqlx::Type, Serialize, Deserialize, Copy, Clone, Deref)]
|
#[derive(sqlx::Type, Serialize, Deserialize, Copy, Clone, Deref)]
|
||||||
|
Loading…
Reference in New Issue
Block a user