Add service order id
This commit is contained in:
parent
b4dc801820
commit
252f5373ff
@ -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, order_ext_id
|
SELECT id, buyer_id, status, order_ext_id, service_order_id
|
||||||
FROM account_orders
|
FROM account_orders
|
||||||
ORDER BY id DESC
|
ORDER BY id DESC
|
||||||
"#,
|
"#,
|
||||||
@ -74,7 +74,7 @@ pub(crate) async fn create_account_order(
|
|||||||
r#"
|
r#"
|
||||||
INSERT INTO account_orders (buyer_id, status)
|
INSERT INTO account_orders (buyer_id, status)
|
||||||
VALUES ($1, $2, $3)
|
VALUES ($1, $2, $3)
|
||||||
RETURNING id, buyer_id, status, order_ext_id
|
RETURNING id, buyer_id, status, order_ext_id, service_order_id
|
||||||
"#,
|
"#,
|
||||||
)
|
)
|
||||||
.bind(msg.buyer_id)
|
.bind(msg.buyer_id)
|
||||||
@ -148,7 +148,7 @@ pub(crate) async fn update_account_order(
|
|||||||
UPDATE account_orders
|
UPDATE account_orders
|
||||||
SET buyer_id = $2 AND status = $3 AND order_id = $4
|
SET buyer_id = $2 AND status = $3 AND order_id = $4
|
||||||
WHERE id = $1
|
WHERE id = $1
|
||||||
RETURNING id, buyer_id, status, order_ext_id
|
RETURNING id, buyer_id, status, order_ext_id, service_order_id
|
||||||
"#,
|
"#,
|
||||||
)
|
)
|
||||||
.bind(msg.id)
|
.bind(msg.id)
|
||||||
@ -185,7 +185,7 @@ pub(crate) async fn update_account_order_by_ext(
|
|||||||
UPDATE account_orders
|
UPDATE account_orders
|
||||||
SET status = $2
|
SET status = $2
|
||||||
WHERE order_ext_id = $1
|
WHERE order_ext_id = $1
|
||||||
RETURNING id, buyer_id, status, order_ext_id
|
RETURNING id, buyer_id, status, order_ext_id, service_order_id
|
||||||
"#,
|
"#,
|
||||||
)
|
)
|
||||||
.bind(msg.order_ext_id)
|
.bind(msg.order_ext_id)
|
||||||
@ -209,7 +209,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, order_ext_id
|
SELECT id, buyer_id, status, order_ext_id, service_order_id
|
||||||
FROM account_orders
|
FROM account_orders
|
||||||
WHERE id = $1
|
WHERE id = $1
|
||||||
"#,
|
"#,
|
||||||
@ -222,3 +222,34 @@ WHERE id = $1
|
|||||||
super::Error::AccountOrder(Error::NotExists)
|
super::Error::AccountOrder(Error::NotExists)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(actix::Message)]
|
||||||
|
#[rtype(result = "Result<AccountOrder>")]
|
||||||
|
pub struct SetOrderServiceId {
|
||||||
|
pub id: AccountOrderId,
|
||||||
|
pub service_order_id: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
db_async_handler!(SetOrderServiceId, set_order_service_id, AccountOrder);
|
||||||
|
|
||||||
|
pub(crate) async fn set_order_service_id(
|
||||||
|
msg: SetOrderServiceId,
|
||||||
|
db: PgPool,
|
||||||
|
) -> Result<AccountOrder> {
|
||||||
|
sqlx::query_as(
|
||||||
|
r#"
|
||||||
|
UPDATE account_orders
|
||||||
|
SET service_order_id = $2
|
||||||
|
WHERE id = $1
|
||||||
|
RETURNING id, buyer_id, status, order_ext_id, service_order_id
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.bind(msg.id)
|
||||||
|
.bind(msg.service_order_id)
|
||||||
|
.fetch_one(&db)
|
||||||
|
.await
|
||||||
|
.map_err(|e| {
|
||||||
|
log::error!("{e:?}");
|
||||||
|
super::Error::AccountOrder(Error::NotExists)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
@ -236,7 +236,7 @@ pub(crate) async fn request_payment(
|
|||||||
let pay_u::res::CreateOrder {
|
let pay_u::res::CreateOrder {
|
||||||
status: _,
|
status: _,
|
||||||
redirect_uri,
|
redirect_uri,
|
||||||
order_id: _,
|
order_id,
|
||||||
ext_order_id: _,
|
ext_order_id: _,
|
||||||
} = {
|
} = {
|
||||||
client
|
client
|
||||||
@ -265,6 +265,15 @@ pub(crate) async fn request_payment(
|
|||||||
.await?
|
.await?
|
||||||
};
|
};
|
||||||
|
|
||||||
|
query_db!(
|
||||||
|
db,
|
||||||
|
database::SetOrderServiceId {
|
||||||
|
service_order_id: order_id.0,
|
||||||
|
id: db_order.id,
|
||||||
|
},
|
||||||
|
Error::CreateOrder
|
||||||
|
);
|
||||||
|
|
||||||
let order_items = query_db!(
|
let order_items = query_db!(
|
||||||
db,
|
db,
|
||||||
database::OrderItems {
|
database::OrderItems {
|
||||||
|
@ -100,7 +100,7 @@ async fn migrate(opts: MigrateOpts) -> Result<()> {
|
|||||||
let config = config::default_load(&opts);
|
let config = config::default_load(&opts);
|
||||||
let db = database::Database::build(config).await?;
|
let db = database::Database::build(config).await?;
|
||||||
let res: std::result::Result<(), MigrateError> =
|
let res: std::result::Result<(), MigrateError> =
|
||||||
sqlx::migrate!("../db/migrate").run(db.pool()).await;
|
sqlx::migrate!("../migrations").run(db.pool()).await;
|
||||||
match res {
|
match res {
|
||||||
Ok(()) => Ok(()),
|
Ok(()) => Ok(()),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
@ -535,6 +535,7 @@ pub struct AccountOrder {
|
|||||||
pub status: OrderStatus,
|
pub status: OrderStatus,
|
||||||
pub order_id: Option<OrderId>,
|
pub order_id: Option<OrderId>,
|
||||||
pub order_ext_id: uuid::Uuid,
|
pub order_ext_id: uuid::Uuid,
|
||||||
|
pub service_order_id: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(sqlx::FromRow, Serialize, Deserialize)]
|
#[derive(sqlx::FromRow, Serialize, Deserialize)]
|
||||||
@ -553,6 +554,7 @@ impl From<AccountOrder> for PublicAccountOrder {
|
|||||||
status,
|
status,
|
||||||
order_id,
|
order_id,
|
||||||
order_ext_id: _,
|
order_ext_id: _,
|
||||||
|
service_order_id: _,
|
||||||
}: AccountOrder,
|
}: AccountOrder,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
Self {
|
Self {
|
||||||
|
@ -19,6 +19,7 @@ impl From<(Vec<model::AccountOrder>, Vec<model::OrderItem>)> for AccountOrders {
|
|||||||
status,
|
status,
|
||||||
order_id,
|
order_id,
|
||||||
order_ext_id: _,
|
order_ext_id: _,
|
||||||
|
service_order_id: _,
|
||||||
}| {
|
}| {
|
||||||
AccountOrder {
|
AccountOrder {
|
||||||
id,
|
id,
|
||||||
@ -43,6 +44,7 @@ impl From<(model::AccountOrder, Vec<model::OrderItem>)> for AccountOrder {
|
|||||||
status,
|
status,
|
||||||
order_id,
|
order_id,
|
||||||
order_ext_id: _,
|
order_ext_id: _,
|
||||||
|
service_order_id: _,
|
||||||
},
|
},
|
||||||
mut items,
|
mut items,
|
||||||
): (model::AccountOrder, Vec<model::OrderItem>),
|
): (model::AccountOrder, Vec<model::OrderItem>),
|
||||||
|
5
build.rs
Normal file
5
build.rs
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
// generated by `sqlx migrate build-script`
|
||||||
|
fn main() {
|
||||||
|
// trigger recompilation when a new migration is added
|
||||||
|
println!("cargo:rerun-if-changed=migrations");
|
||||||
|
}
|
@ -0,0 +1,2 @@
|
|||||||
|
alter table account_orders
|
||||||
|
ADD COLUMN service_order_id TEXT UNIQUE;
|
Loading…
Reference in New Issue
Block a user