fix: record sale time in LineItemView
This commit is contained in:
parent
ec717d1664
commit
8b8111f17e
5 changed files with 50 additions and 11 deletions
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"db_name": "PostgreSQL",
|
"db_name": "PostgreSQL",
|
||||||
"query": "SELECT \n product_name,\n product_id,\n line_item_id,\n quantity_minor_unit,\n quantity_minor_number,\n quantity_major_unit,\n quantity_major_number,\n deleted\n FROM\n cqrs_ordering_line_item_query\n WHERE\n line_item_id = $1;",
|
"query": "SELECT \n product_name,\n product_id,\n line_item_id,\n quantity_minor_unit,\n quantity_minor_number,\n quantity_major_unit,\n quantity_major_number,\n sale_time,\n deleted\n FROM\n cqrs_ordering_line_item_query\n WHERE\n line_item_id = $1;",
|
||||||
"describe": {
|
"describe": {
|
||||||
"columns": [
|
"columns": [
|
||||||
{
|
{
|
||||||
|
@ -40,6 +40,11 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ordinal": 7,
|
"ordinal": 7,
|
||||||
|
"name": "sale_time",
|
||||||
|
"type_info": "Timestamptz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ordinal": 8,
|
||||||
"name": "deleted",
|
"name": "deleted",
|
||||||
"type_info": "Bool"
|
"type_info": "Bool"
|
||||||
}
|
}
|
||||||
|
@ -57,8 +62,9 @@
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
false
|
false
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"hash": "3f2b3da434c433067e0a68fa98ad0d7b1a00a836682d9ef20fd58c72bd5115f5"
|
"hash": "2d5ff8c368757fc2d390aaaed23d18fe6888ace9e7e2b9d12f02d2c50d80e685"
|
||||||
}
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"db_name": "PostgreSQL",
|
"db_name": "PostgreSQL",
|
||||||
"query": "UPDATE\n cqrs_ordering_line_item_query\n SET\n version = $1,\n product_name = $2,\n product_id = $3,\n line_item_id = $4,\n quantity_minor_unit = $5,\n quantity_minor_number = $6,\n quantity_major_unit = $7,\n quantity_major_number = $8,\n deleted = $9;",
|
"query": "UPDATE\n cqrs_ordering_line_item_query\n SET\n version = $1,\n product_name = $2,\n product_id = $3,\n line_item_id = $4,\n quantity_minor_unit = $5,\n quantity_minor_number = $6,\n quantity_major_unit = $7,\n quantity_major_number = $8,\n sale_time = $9,\n deleted = $10;",
|
||||||
"describe": {
|
"describe": {
|
||||||
"columns": [],
|
"columns": [],
|
||||||
"parameters": {
|
"parameters": {
|
||||||
|
@ -13,10 +13,11 @@
|
||||||
"Int4",
|
"Int4",
|
||||||
"Text",
|
"Text",
|
||||||
"Int4",
|
"Int4",
|
||||||
|
"Timestamptz",
|
||||||
"Bool"
|
"Bool"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"nullable": []
|
"nullable": []
|
||||||
},
|
},
|
||||||
"hash": "46fddc14a06f84a15fbcc04cfff9d3f41e03c73e2db7d7ee39a0f3e86cc38fe9"
|
"hash": "724e980a30694acbdc309702e5349ddff36d11757477e5ec130c1f4209e613dc"
|
||||||
}
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"db_name": "PostgreSQL",
|
"db_name": "PostgreSQL",
|
||||||
"query": "INSERT INTO cqrs_ordering_line_item_query (\n version,\n product_name,\n product_id,\n line_item_id,\n quantity_minor_unit,\n quantity_minor_number,\n quantity_major_unit,\n quantity_major_number,\n\n deleted\n ) VALUES (\n $1, $2, $3, $4, $5, $6, $7, $8, $9\n );",
|
"query": "INSERT INTO cqrs_ordering_line_item_query (\n version,\n product_name,\n product_id,\n line_item_id,\n quantity_minor_unit,\n quantity_minor_number,\n quantity_major_unit,\n quantity_major_number,\n sale_time,\n deleted\n ) VALUES (\n $1, $2, $3, $4, $5, $6, $7, $8, $9, $10\n );",
|
||||||
"describe": {
|
"describe": {
|
||||||
"columns": [],
|
"columns": [],
|
||||||
"parameters": {
|
"parameters": {
|
||||||
|
@ -13,10 +13,11 @@
|
||||||
"Int4",
|
"Int4",
|
||||||
"Text",
|
"Text",
|
||||||
"Int4",
|
"Int4",
|
||||||
|
"Timestamptz",
|
||||||
"Bool"
|
"Bool"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"nullable": []
|
"nullable": []
|
||||||
},
|
},
|
||||||
"hash": "1e7df92c508fac4c32c00621b099c673d8745b8d145b603807c771906a7af756"
|
"hash": "88f519e645dba9eb091d18e8f5c0db127ac0d070fb81e5b157a68638c3688996"
|
||||||
}
|
}
|
|
@ -6,7 +6,7 @@ CREATE TABLE IF NOT EXISTS cqrs_ordering_line_item_query
|
||||||
(
|
(
|
||||||
version bigint CHECK (version >= 0) NOT NULL,
|
version bigint CHECK (version >= 0) NOT NULL,
|
||||||
|
|
||||||
sale_time timestamp with time zone DEFAULT (CURRENT_TIMESTAMP),
|
sale_time timestamp with time zone DEFAULT (CURRENT_TIMESTAMP) NOT NULL,
|
||||||
line_item_id UUID NOT NULL UNIQUE,
|
line_item_id UUID NOT NULL UNIQUE,
|
||||||
|
|
||||||
product_name TEXT NOT NULL,
|
product_name TEXT NOT NULL,
|
||||||
|
|
|
@ -8,6 +8,7 @@ use async_trait::async_trait;
|
||||||
use cqrs_es::persist::{PersistenceError, ViewContext, ViewRepository};
|
use cqrs_es::persist::{PersistenceError, ViewContext, ViewRepository};
|
||||||
use cqrs_es::{EventEnvelope, Query, View};
|
use cqrs_es::{EventEnvelope, Query, View};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
use time::OffsetDateTime;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
use super::errors::*;
|
use super::errors::*;
|
||||||
|
@ -21,10 +22,11 @@ pub const NEW_LINE_ITEM_NON_UUID: &str = "new_line_item_non_uuid-asdfa";
|
||||||
|
|
||||||
// The view for a LineItem query, for a standard http application this should
|
// The view for a LineItem query, for a standard http application this should
|
||||||
// be designed to reflect the response dto that will be returned to a user.
|
// be designed to reflect the response dto that will be returned to a user.
|
||||||
#[derive(Debug, Default, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
pub struct LineItemView {
|
pub struct LineItemView {
|
||||||
product_name: String,
|
product_name: String,
|
||||||
product_id: Uuid,
|
product_id: Uuid,
|
||||||
|
sale_time: OffsetDateTime,
|
||||||
|
|
||||||
line_item_id: Uuid,
|
line_item_id: Uuid,
|
||||||
|
|
||||||
|
@ -36,6 +38,27 @@ pub struct LineItemView {
|
||||||
deleted: bool,
|
deleted: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
impl Default for LineItemView {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self {
|
||||||
|
sale_time: OffsetDateTime::now_utc(),
|
||||||
|
product_name: Default::default(),
|
||||||
|
product_id: Default::default(),
|
||||||
|
|
||||||
|
line_item_id: Default::default(),
|
||||||
|
|
||||||
|
quantity_major_number: Default::default(),
|
||||||
|
quantity_minor_number: Default::default(),
|
||||||
|
quantity_major_unit: Default::default(),
|
||||||
|
quantity_minor_unit: Default::default(),
|
||||||
|
deleted: false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
impl From<LineItemView> for LineItem {
|
impl From<LineItemView> for LineItem {
|
||||||
fn from(v: LineItemView) -> Self {
|
fn from(v: LineItemView) -> Self {
|
||||||
let quantity = QuantityBuilder::default()
|
let quantity = QuantityBuilder::default()
|
||||||
|
@ -60,6 +83,7 @@ impl From<LineItemView> for LineItem {
|
||||||
.product_name(v.product_name)
|
.product_name(v.product_name)
|
||||||
.line_item_id(v.line_item_id)
|
.line_item_id(v.line_item_id)
|
||||||
.quantity(quantity)
|
.quantity(quantity)
|
||||||
|
.sale_time(v.sale_time)
|
||||||
.product_id(v.product_id)
|
.product_id(v.product_id)
|
||||||
.deleted(v.deleted)
|
.deleted(v.deleted)
|
||||||
.build()
|
.build()
|
||||||
|
@ -83,6 +107,8 @@ impl View<LineItem> for LineItemView {
|
||||||
self.quantity_major_unit = val.line_item().quantity().major().unit().to_string();
|
self.quantity_major_unit = val.line_item().quantity().major().unit().to_string();
|
||||||
self.quantity_minor_unit = val.line_item().quantity().minor().unit().to_string();
|
self.quantity_minor_unit = val.line_item().quantity().minor().unit().to_string();
|
||||||
|
|
||||||
|
self.sale_time = val.line_item().sale_time().clone();
|
||||||
|
|
||||||
self.deleted = false;
|
self.deleted = false;
|
||||||
}
|
}
|
||||||
_ => (),
|
_ => (),
|
||||||
|
@ -108,6 +134,7 @@ impl ViewRepository<LineItemView, LineItem> for OrderingDBPostgresAdapter {
|
||||||
quantity_minor_number,
|
quantity_minor_number,
|
||||||
quantity_major_unit,
|
quantity_major_unit,
|
||||||
quantity_major_number,
|
quantity_major_number,
|
||||||
|
sale_time,
|
||||||
deleted
|
deleted
|
||||||
FROM
|
FROM
|
||||||
cqrs_ordering_line_item_query
|
cqrs_ordering_line_item_query
|
||||||
|
@ -141,6 +168,7 @@ impl ViewRepository<LineItemView, LineItem> for OrderingDBPostgresAdapter {
|
||||||
quantity_minor_number,
|
quantity_minor_number,
|
||||||
quantity_major_unit,
|
quantity_major_unit,
|
||||||
quantity_major_number,
|
quantity_major_number,
|
||||||
|
sale_time,
|
||||||
deleted
|
deleted
|
||||||
FROM
|
FROM
|
||||||
cqrs_ordering_line_item_query
|
cqrs_ordering_line_item_query
|
||||||
|
@ -193,10 +221,10 @@ impl ViewRepository<LineItemView, LineItem> for OrderingDBPostgresAdapter {
|
||||||
quantity_minor_number,
|
quantity_minor_number,
|
||||||
quantity_major_unit,
|
quantity_major_unit,
|
||||||
quantity_major_number,
|
quantity_major_number,
|
||||||
|
sale_time,
|
||||||
deleted
|
deleted
|
||||||
) VALUES (
|
) VALUES (
|
||||||
$1, $2, $3, $4, $5, $6, $7, $8, $9
|
$1, $2, $3, $4, $5, $6, $7, $8, $9, $10
|
||||||
);",
|
);",
|
||||||
version,
|
version,
|
||||||
view.product_name,
|
view.product_name,
|
||||||
|
@ -206,6 +234,7 @@ impl ViewRepository<LineItemView, LineItem> for OrderingDBPostgresAdapter {
|
||||||
view.quantity_minor_number,
|
view.quantity_minor_number,
|
||||||
view.quantity_major_unit,
|
view.quantity_major_unit,
|
||||||
view.quantity_major_number,
|
view.quantity_major_number,
|
||||||
|
view.sale_time,
|
||||||
view.deleted,
|
view.deleted,
|
||||||
)
|
)
|
||||||
.execute(&self.pool)
|
.execute(&self.pool)
|
||||||
|
@ -227,7 +256,8 @@ impl ViewRepository<LineItemView, LineItem> for OrderingDBPostgresAdapter {
|
||||||
quantity_minor_number = $6,
|
quantity_minor_number = $6,
|
||||||
quantity_major_unit = $7,
|
quantity_major_unit = $7,
|
||||||
quantity_major_number = $8,
|
quantity_major_number = $8,
|
||||||
deleted = $9;",
|
sale_time = $9,
|
||||||
|
deleted = $10;",
|
||||||
version,
|
version,
|
||||||
view.product_name,
|
view.product_name,
|
||||||
view.product_id,
|
view.product_id,
|
||||||
|
@ -236,6 +266,7 @@ impl ViewRepository<LineItemView, LineItem> for OrderingDBPostgresAdapter {
|
||||||
view.quantity_minor_number,
|
view.quantity_minor_number,
|
||||||
view.quantity_major_unit,
|
view.quantity_major_unit,
|
||||||
view.quantity_major_number,
|
view.quantity_major_number,
|
||||||
|
view.sale_time,
|
||||||
view.deleted,
|
view.deleted,
|
||||||
)
|
)
|
||||||
.execute(&self.pool)
|
.execute(&self.pool)
|
||||||
|
|
Loading…
Reference in a new issue