@dascompany/database 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/SQL.json CHANGED
@@ -62,15 +62,14 @@
62
62
  },
63
63
  "products": {
64
64
  "select": "SELECT id, sku, url, title, description, net_price, vat, color, quantity, width, height, length, file_id, created_at, deleted FROM products WHERE id = $id::BIGINT",
65
- "selectAll": "SELECT id, sku, url, title, description, net_price, vat, color, quantity, width, height, length, file_id, created_at, deleted FROM products WHERE deleted = false $PARAMS $ORDERBY LIMIT $limit::BIGINT OFFSET $offset::BIGINT",
66
- "selectListForOrder": "SELECT id, title, sku, file_id, net_price FROM products WHERE deleted = false",
65
+ "selectForUrl": "SELECT id, sku, url, title, description, net_price, vat, color, quantity, width, height, length, file_id, created_at, deleted FROM products WHERE LOWER( url ) = LOWER($url::TEXT)",
66
+ "selectForSku": "SELECT * FROM products WHERE LOWER( sku ) = LOWER($sku::TEXT)",
67
+ "selectAll": "SELECT id, sku, url, title, description, net_price, vat, color, quantity, width, height, length, file_id, created_at, deleted FROM products $WHERE $ORDERBY LIMIT $limit::BIGINT OFFSET $offset::BIGINT",
68
+ "selectAllActive": "SELECT id, sku, url, title, description, net_price, vat, color, quantity, width, height, length, file_id, created_at, deleted FROM products WHERE deleted = false $PARAMS $ORDERBY LIMIT $limit::BIGINT OFFSET $offset::BIGINT",
67
69
  "selectIdForSku": "SELECT id FROM products WHERE LOWER( sku ) = LOWER($sku::TEXT) AND deleted = false",
68
70
  "insert": "INSERT INTO products( id, sku, url, title, description, net_price, vat, color, quantity, width, length, height, file_id, deleted) VALUES ($id::BIGINT, $sku::TEXT, $url::TEXT, $title::TEXT, $description::TEXT, $net_price::DOUBLE PRECISION, $vat::INT, $color::TEXT, $quantity::INT, $width::INT, $length::INT, $height::DOUBLE PRECISION,$file_id::BIGINT ,false::BOOL)",
69
- "update": "UPDATE products SET url = $url::TEXT, title = $title::TEXT , description = $description::TEXT , net_price = $net_price::DOUBLE PRECISION, vat = $vat::INT, color = $color::TEXT, quantity = $quantity::INT, width = $width::INT, length = $length::INT, height = $height::DOUBLE PRECISION, file_id = $file_id::BIGINT WHERE id = $id::BIGINT",
71
+ "update": "UPDATE products SET url = $url::TEXT, title = $title::TEXT, description = $description::TEXT , net_price = $net_price::DOUBLE PRECISION, vat = $vat::INT, color = $color::TEXT, quantity = $quantity::INT, width = $width::INT, length = $length::INT, height = $height::DOUBLE PRECISION, file_id = $file_id::BIGINT WHERE id = $id::BIGINT",
70
72
  "delete": "UPDATE products SET deleted = true WHERE id = $id::BIGINT",
71
- "restore": "UPDATE products SET deleted = false WHERE id = $id::BIGINT",
72
- "selectForSku": "SELECT * FROM products WHERE LOWER( sku ) = LOWER($sku::TEXT)",
73
- "selectForUrl": "SELECT id, sku, url, title, description, net_price, vat, color, quantity, width, height, length, file_id, created_at, deleted FROM products WHERE LOWER( url ) = LOWER($url::TEXT)",
74
73
  "selectNextId": "SELECT nextval('product_id'::regclass)",
75
74
  "count": "SELECT COUNT(*) AS total_rows FROM products WHERE deleted = false $PARAMS"
76
75
  },
@@ -84,18 +83,15 @@
84
83
  "count": "SELECT COUNT (*) AS TOTAL_ROWS FROM orders.orders as o JOIN orders.statuses as os ON o.id = os.order_id JOIN (SELECT order_id, MAX(id) as max_id FROM orders.statuses GROUP BY order_id) as latest ON os.order_id = latest.order_id AND os.id = latest.max_id $WHERE"
85
84
  },
86
85
  "ordersProducts": {
87
- "selectProducts": "SELECT op.id, order_id, product_id, title, sku, p.file_id, op.net_price FROM orders.orders_products as op JOIN products as p ON op.product_id = p.id WHERE order_id = $order_id::BIGINT AND in_order = true",
88
- "select": "SELECT id, order_id, product_id, in_order FROM orders.orders_products WHERE order_id = $order_id::BIGINT AND in_order = true",
89
- "selectAll": "SELECT * FROM orders.orders_products $WHERE",
90
- "getAllActiveForOrderId": "SELECT * FROM orders.orders_products WHERE order_id = $order_id::BIGINT and in_order = true",
86
+ "selectAll": "SELECT op.id, order_id, product_id, title, sku, vat, p.file_id, op.net_price FROM orders.orders_products WHERE order_id = $order_id::BIGINT",
87
+ "selectAllActive": "SELECT op.id, order_id, product_id, title, sku, vat, p.file_id, op.net_price FROM orders.orders_products as op JOIN products as p ON op.product_id = p.id WHERE order_id = $order_id::BIGINT and in_order = true",
91
88
  "insert": "INSERT INTO orders.orders_products( id, order_id, product_id, net_price ) VALUES ( $id::BIGINT , $order_id::BIGINT, $product_id::BIGINT, $net_price::DOUBLE PRECISION )",
92
89
  "selectNextId": "SELECT nextval('orders.orders_products_id'::regclass)",
93
90
  "delete": "UPDATE orders.orders_products SET in_order = false WHERE id = $id::BIGINT"
94
91
  },
95
92
  "statuses": {
96
- "selectLatest": "SELECT s.id, s.order_id, created_at, user_id, s.type as type_id, st.key as type_name FROM orders.statuses as s JOIN orders.status_types as st ON s.type = st.id WHERE s.order_id = $order_id::BIGINT ORDER BY s.id DESC LIMIT 1",
97
- "selectForOrder": "SELECT s.id, order_id, created_at, user_id, st.key as type FROM orders.statuses as s JOIN orders.status_types as st ON s.type = st.id WHERE order_id = $order_id::BIGINT ORDER BY s.id DESC LIMIT 1",
98
- "selectAllForOrder": "SELECT s.id, order_id, created_at, user_id, st.key as type FROM orders.statuses as s JOIN orders.status_types as st ON s.type = st.id WHERE order_id = $order_id::BIGINT ORDER BY s.id DESC",
93
+ "select": "SELECT s.id, s.order_id, created_at, user_id, s.type as type_id, st.key as type_name FROM orders.statuses as s JOIN orders.status_types as st ON s.type = st.id WHERE s.order_id = $order_id::BIGINT ORDER BY s.id DESC LIMIT 1",
94
+ "selectAll": "SELECT s.id, s.order_id, created_at, user_id, s.type as type_id, st.key as type_name FROM orders.statuses as s JOIN orders.status_types as st ON s.type = st.id WHERE order_id = $order_id::BIGINT ORDER BY s.id DESC",
99
95
  "insert": "INSERT INTO orders.statuses( id, type, order_id, user_id ) VALUES ($id::BIGINT, $type::BIGINT, $order_id::BIGINT, $user_id::BIGINT)",
100
96
  "selectNextId": "SELECT nextval('orders.statuses_id'::regclass)"
101
97
  },
@@ -1,7 +1,6 @@
1
1
  import DatabaseConnection from "../DatabaseConnection";
2
2
  import AddressesReader from "./AddressesReader";
3
3
  import DeliveryMethodReader from "./DeliveryMethodReader";
4
- import DeliveryStatusReader from "./DeliveryStatusReader";
5
4
  import PersonalDataReader from "./PersonalDataReader";
6
5
  export default class DeliveryDetailsReader {
7
6
  static async get(deliveryDetailsId) {
@@ -17,15 +16,11 @@ export default class DeliveryDetailsReader {
17
16
  address = await AddressesReader.get(deliveryDetails.address_id);
18
17
  if (deliveryDetails.delivery_method_id)
19
18
  deliveryMethod = await DeliveryMethodReader.get(deliveryDetails.delivery_method_id);
20
- const status = await DeliveryStatusReader.get(deliveryDetails.id);
21
- const statuses = await DeliveryStatusReader.getAll(deliveryDetails.id);
22
19
  return {
23
20
  id,
24
21
  personalData,
25
22
  address,
26
- deliveryMethod,
27
- status,
28
- statuses,
23
+ deliveryMethod
29
24
  };
30
25
  }
31
26
  }
@@ -1,10 +1,7 @@
1
1
  import OrderProductI from "../types/OrderProductI";
2
2
  export default class OrderProductsReader {
3
- static getForOrder(orderId: number): Promise<any[]>;
4
3
  static getAll(orderId: number): Promise<OrderProductI[]>;
4
+ static getForOrder(orderId: number): Promise<any[]>;
5
+ private static correctOrderProducts;
5
6
  private static correctProduct;
6
- static get(orderId: number): Promise<OrderProductI[]>;
7
- static getAllForIds(orderProductsIds: number[]): Promise<any[]>;
8
- private static correctOrdersProducts;
9
- private static correctOrderProduct;
10
7
  }
@@ -1,13 +1,16 @@
1
1
  import DatabaseConnection from "../DatabaseConnection";
2
- import ConnectorE from "../types/ConnectorE";
3
- import ParameterType from "../types/parameters/ParameterType";
4
2
  import calculateNetToGrossPrice from "../utils/calculateNetToGrossPrice";
5
3
  import FilesReader from "./FilesReader";
6
- import ProductReader from "./ProductReader";
7
4
  export default class OrderProductsReader {
5
+ static async getAll(orderId) {
6
+ const connection = DatabaseConnection.get();
7
+ const orderProducts = await connection.ordersProducts.selectAllActive(orderId);
8
+ const correctProducts = await this.correctOrderProducts(orderProducts);
9
+ return correctProducts;
10
+ }
8
11
  static async getForOrder(orderId) {
9
12
  const connection = DatabaseConnection.get();
10
- const products = await connection.ordersProducts.selectAll(orderId);
13
+ const products = await connection.ordersProducts.selectAllActive(orderId);
11
14
  const correctProducts = [];
12
15
  for (let i = 0; i < products.length; i++) {
13
16
  const correctProduct = {
@@ -20,9 +23,7 @@ export default class OrderProductsReader {
20
23
  }
21
24
  return correctProducts;
22
25
  }
23
- static async getAll(orderId) {
24
- const connection = DatabaseConnection.get();
25
- const products = await connection.ordersProducts.selectAll(orderId);
26
+ static async correctOrderProducts(products) {
26
27
  const correctProducts = [];
27
28
  for (let i = 0; i < products.length; i++) {
28
29
  const correctProduct = await this.correctProduct(products[i]);
@@ -31,62 +32,20 @@ export default class OrderProductsReader {
31
32
  return correctProducts;
32
33
  }
33
34
  static async correctProduct(orderProduct) {
34
- const product = await ProductReader.get(orderProduct.product_id);
35
- const file = await FilesReader.get(product.fileId);
35
+ const file = await FilesReader.get(orderProduct.file_id);
36
36
  const correctProduct = {
37
37
  id: orderProduct.id,
38
- productId: orderProduct.product_id,
39
38
  orderId: orderProduct.order_id,
40
39
  product: {
41
- id: product.id,
42
- sku: product.sku,
43
- title: product.title,
44
- netPrice: product.netPrice,
45
- grossPrice: calculateNetToGrossPrice(product.netPrice, product.vat),
46
- vat: product.vat,
40
+ id: orderProduct.product_id,
41
+ sku: orderProduct.sku,
42
+ title: orderProduct.title,
43
+ netPrice: orderProduct.net_price,
44
+ grossPrice: calculateNetToGrossPrice(orderProduct.net_price, orderProduct.vat),
45
+ vat: orderProduct.vat,
47
46
  file,
48
47
  }
49
48
  };
50
49
  return correctProduct;
51
50
  }
52
- static async get(orderId) {
53
- const connection = DatabaseConnection.get();
54
- const orderProducts = await connection.ordersProducts.selectProducts(orderId);
55
- for (const product of orderProducts) {
56
- const file = await FilesReader.get(product.file_id);
57
- product.file = file;
58
- }
59
- return this.correctOrdersProducts(orderProducts);
60
- }
61
- static async getAllForIds(orderProductsIds) {
62
- const connection = DatabaseConnection.get();
63
- const queryOptions = {
64
- where: {
65
- connector: ConnectorE.and,
66
- parameters: [
67
- { name: 'id', type: ParameterType.arrayBigint, value: orderProductsIds },
68
- ]
69
- }
70
- };
71
- const orderProducts = await connection.ordersProducts.selectAllForIds(queryOptions);
72
- return orderProducts;
73
- }
74
- static correctOrdersProducts(productRows) {
75
- const products = [];
76
- for (let i = 0; i < productRows.length; i++) {
77
- const product = this.correctOrderProduct(productRows[i]);
78
- products.push(product);
79
- }
80
- return products;
81
- }
82
- static correctOrderProduct(product) {
83
- return {
84
- orderProductId: product.id,
85
- netPrice: product.net_price,
86
- id: product.product_id,
87
- title: product.title,
88
- sku: product.sku,
89
- file: product.file
90
- };
91
- }
92
51
  }
@@ -12,28 +12,29 @@ export default class OrderReader {
12
12
  const orders = await connection.orders.selectForClient(clientAccountId);
13
13
  const correctOrders = [];
14
14
  for (let i = 0; i < orders.length; i++) {
15
- const correctOrder = this.correctOrder(orders[i]);
15
+ const correctOrder = await this.correctOrder(orders[i]);
16
16
  const products = await OrderProductsReader.getAll(orders[i].id);
17
- const status = await OrderStatusReader.get(orders[i].id);
18
- correctOrders.push({ ...correctOrder, status, products });
17
+ correctOrders.push({ ...correctOrder, products });
19
18
  }
20
19
  return correctOrders;
21
20
  }
22
21
  static async getAll(queryOptions) {
23
22
  const connection = DatabaseConnection.get();
24
- const orders = await connection.orders.selectAll(queryOptions);
23
+ const orderRows = await connection.orders.selectAll(queryOptions);
25
24
  const quantity = await connection.orders.count(queryOptions);
26
- return { orders: this.correctOrders(orders), quantity };
25
+ const orders = await this.correctOrders(orderRows);
26
+ return { orders, quantity };
27
27
  }
28
- static correctOrders(orderRows) {
28
+ static async correctOrders(orderRows) {
29
29
  const orders = [];
30
30
  for (let i = 0; i < orderRows.length; i++) {
31
- const order = this.correctOrder(orderRows[i]);
31
+ const order = await this.correctOrder(orderRows[i]);
32
32
  orders.push(order);
33
33
  }
34
34
  return orders;
35
35
  }
36
- static correctOrder(order) {
36
+ static async correctOrder(order) {
37
+ const status = await OrderStatusReader.get(order.id);
37
38
  const correctOrder = {
38
39
  id: order.id,
39
40
  email: order.email,
@@ -44,7 +45,8 @@ export default class OrderReader {
44
45
  deliveryDetailsId: order.delivery_details_id,
45
46
  invoiceDetailsId: order.invoice_details_id,
46
47
  paymentDetailsId: order.payment_details_id,
47
- zsiId: order.zsi_id
48
+ zsiId: order.zsi_id,
49
+ status
48
50
  };
49
51
  return correctOrder;
50
52
  }
@@ -1,4 +1,4 @@
1
- import OrderStatusI from "../types/OrderStatusI";
1
+ import OrderStatusI from "../types/StatusI";
2
2
  export default class OrderStatusReader {
3
3
  static get(orderId: number): Promise<OrderStatusI>;
4
4
  static getAll(orderId: number): Promise<OrderStatusI[]>;
@@ -2,12 +2,12 @@ import DatabaseConnection from "../DatabaseConnection";
2
2
  export default class OrderStatusReader {
3
3
  static async get(orderId) {
4
4
  const connection = DatabaseConnection.get();
5
- const statusRow = await connection.statuses.selectForOrder(orderId);
5
+ const statusRow = await connection.statuses.select(orderId);
6
6
  return this.correctStatus(statusRow);
7
7
  }
8
8
  static async getAll(orderId) {
9
9
  const connection = DatabaseConnection.get();
10
- const statuses = await connection.statuses.selectAllForOrder(orderId);
10
+ const statuses = await connection.statuses.selectAll(orderId);
11
11
  const correctStatuss = [];
12
12
  for (let i = 0; i < statuses.length; i++) {
13
13
  const correctStatus = this.correctStatus(statuses[i]);
@@ -21,7 +21,8 @@ export default class OrderStatusReader {
21
21
  orderId: status.order_id,
22
22
  createdAt: status.created_at,
23
23
  userId: status.user_id,
24
- type: status.type,
24
+ typeId: status.type_id,
25
+ typeName: status.type_name,
25
26
  };
26
27
  return correctStatus;
27
28
  }
@@ -2,12 +2,11 @@ import ProductI from "../types/ProductI";
2
2
  import QueryOptionsI from "../types/QueryOptionsI";
3
3
  export default class ProductReader {
4
4
  static get(productId: number): Promise<ProductI>;
5
- static getIdForSku(productSku: string): Promise<number>;
6
5
  static getForUrl(productUrl: string): Promise<ProductI>;
7
- static getAll(queryOptions: QueryOptionsI): Promise<ProductI[]>;
6
+ static getAllActive(queryOptions: QueryOptionsI): Promise<ProductI[]>;
7
+ static getIdForSku(productSku: string): Promise<number>;
8
8
  static getQuantity(queryOptions: QueryOptionsI): Promise<number>;
9
- static getListForOrder(): Promise<any>;
9
+ private static correctProductWithGraphics;
10
10
  private static correctProducts;
11
11
  private static correctProduct;
12
- private static correctProductForOrderList;
13
12
  }
@@ -6,39 +6,31 @@ export default class ProductReader {
6
6
  static async get(productId) {
7
7
  const connection = DatabaseConnection.get();
8
8
  const product = await connection.products.select(productId);
9
- const thumbnail = await FilesReader.get(product.file_id);
10
- const files = await FilesReader.getForConnection(FileConnectionTypeE.product, product.id);
11
- return this.correctProduct(product, thumbnail, files);
12
- }
13
- static async getIdForSku(productSku) {
14
- const connection = DatabaseConnection.get();
15
- return await connection.products.selectIdForSku(productSku);
9
+ return await this.correctProductWithGraphics(product);
16
10
  }
17
11
  static async getForUrl(productUrl) {
18
12
  const connection = DatabaseConnection.get();
19
13
  const product = await connection.products.selectForUrl(productUrl);
20
- return this.correctProduct(product);
14
+ return await this.correctProductWithGraphics(product);
21
15
  }
22
- static async getAll(queryOptions) {
16
+ static async getAllActive(queryOptions) {
23
17
  const connection = DatabaseConnection.get();
24
- const products = await connection.products.selectAll(queryOptions);
18
+ const products = await connection.products.selectAllActive(queryOptions);
25
19
  return this.correctProducts(products);
26
20
  }
21
+ static async getIdForSku(productSku) {
22
+ const connection = DatabaseConnection.get();
23
+ return await connection.products.selectIdForSku(productSku);
24
+ }
27
25
  static async getQuantity(queryOptions) {
28
26
  const connection = DatabaseConnection.get();
29
27
  const quantity = await connection.products.count(queryOptions);
30
28
  return quantity;
31
29
  }
32
- static async getListForOrder() {
33
- const connection = DatabaseConnection.get();
34
- let correctProducts = [];
35
- const products = await connection.products.selectListForOrder();
36
- for (const product of products) {
37
- const file = await FilesReader.get(product.file_id);
38
- product.file = file;
39
- correctProducts.push(this.correctProductForOrderList(product));
40
- }
41
- return correctProducts;
30
+ static async correctProductWithGraphics(product) {
31
+ const thumbnail = await FilesReader.get(product.file_id);
32
+ const files = await FilesReader.getForConnection(FileConnectionTypeE.product, product.id);
33
+ return this.correctProduct(product, thumbnail, files);
42
34
  }
43
35
  static correctProducts(products) {
44
36
  const correctProducts = [];
@@ -65,17 +57,8 @@ export default class ProductReader {
65
57
  createdAt: product.created_at,
66
58
  deleted: product.deleted,
67
59
  thumbnail: thumbnail ? thumbnail : null,
68
- files: files,
60
+ files,
69
61
  grossPrice: calculateNetToGrossPrice(product.net_price, product.vat)
70
62
  };
71
63
  }
72
- static correctProductForOrderList(product) {
73
- return {
74
- id: product.id,
75
- title: product.title,
76
- sku: product.sku,
77
- file: product.file,
78
- netPrice: product.net_price
79
- };
80
- }
81
64
  }
@@ -1,6 +1,6 @@
1
1
  import OrderProduct from "../stockObjects/OrderProduct";
2
2
  export default class OrderProductsRepo {
3
- static getAllActiveForOrderId(orderId: number): Promise<OrderProduct[]>;
3
+ static getAllActive(orderId: number): Promise<OrderProduct[]>;
4
4
  static getAllForIds(orderProductsIds: number[]): Promise<OrderProduct[]>;
5
5
  private static createOrdersProductsFromRows;
6
6
  private static createOrdersProductFromRow;
@@ -3,9 +3,9 @@ import OrderProduct from "../stockObjects/OrderProduct";
3
3
  import ConnectorE from "../types/ConnectorE";
4
4
  import ParameterType from "../types/parameters/ParameterType";
5
5
  export default class OrderProductsRepo {
6
- static async getAllActiveForOrderId(orderId) {
6
+ static async getAllActive(orderId) {
7
7
  const connection = DatabaseConnection.get();
8
- const orderProducts = await connection.ordersProducts.selectAll(orderId);
8
+ const orderProducts = await connection.ordersProducts.selectAllActive(orderId);
9
9
  return this.createOrdersProductsFromRows(orderProducts);
10
10
  }
11
11
  static async getAllForIds(orderProductsIds) {
@@ -3,12 +3,12 @@ import Status from "../stockObjects/Status";
3
3
  export default class OrderStatusRepo {
4
4
  static async get(orderId) {
5
5
  const connection = DatabaseConnection.get();
6
- const status = await connection.statuses.selectLatest(orderId);
6
+ const status = await connection.statuses.select(orderId);
7
7
  return this.createStatusFromRow(status);
8
8
  }
9
9
  static async getAll(orderId) {
10
10
  const connection = DatabaseConnection.get();
11
- const statuses = await connection.statuses.selectAllForOrder(orderId);
11
+ const statuses = await connection.statuses.selectAll(orderId);
12
12
  return this.createStatusesFromRows(statuses);
13
13
  }
14
14
  static async createStatusesFromRows(dataRows) {
@@ -9,7 +9,6 @@ export default class ProductRepo {
9
9
  static async getForSku(productSku) {
10
10
  const connection = DatabaseConnection.get();
11
11
  const product = await connection.products.selectForSku(productSku);
12
- console.log(product);
13
12
  return this.createProductFromRow(product);
14
13
  }
15
14
  static createProductFromRow(productRow) {
@@ -84,12 +84,17 @@ export default class Order extends StockObject {
84
84
  this.zsiId = zsiId;
85
85
  }
86
86
  async calculateAndUpdatePrice() {
87
- let totalPrice = 0;
88
- const orderProducts = await OrderProductsRepo.getAllActiveForOrderId(this.getId());
89
- for (const product of orderProducts) {
90
- totalPrice += product.getNetPrice();
87
+ const id = this.getId();
88
+ if (id) {
89
+ let totalPrice = 0;
90
+ const orderProducts = await OrderProductsRepo.getAllActive(id);
91
+ for (const product of orderProducts) {
92
+ totalPrice += product.getNetPrice();
93
+ }
94
+ this.setPrice(totalPrice);
91
95
  }
92
- this.setPrice(totalPrice);
96
+ else
97
+ throw Error('The price of an uncreated order cannot be calculated');
93
98
  }
94
99
  getMapper() {
95
100
  return new OrderMapper(this);
@@ -3,10 +3,8 @@ import OrderProductRow from '../../types/rows/OrderProductRow';
3
3
  import OrderProduct from '../../stockObjects/OrderProduct';
4
4
  import QueryOptionsI from '../../types/QueryOptionsI';
5
5
  export default class OrdersProductsTable extends Table {
6
- selectAll(orderId: number): Promise<OrderProductRow[]>;
7
- getAllActiveForOrderId(orderId: number): Promise<OrderProduct[]>;
8
- selectProducts(orderId: number): Promise<OrderProductRow[]>;
9
- selectAllForIds(queryOprions: QueryOptionsI): Promise<OrderProduct[]>;
6
+ selectAllActive(orderId: number): Promise<OrderProductRow[]>;
7
+ selectAllForIds(queryOprions: QueryOptionsI): Promise<OrderProductRow[]>;
10
8
  delete(orderProduct: OrderProduct): Promise<boolean>;
11
9
  private bindParams;
12
10
  insert(orderProduct: OrderProduct): Promise<boolean>;
@@ -1,20 +1,8 @@
1
1
  import Table from '../../Table';
2
2
  import * as SQL from '../../SQL.json';
3
3
  export default class OrdersProductsTable extends Table {
4
- async selectAll(orderId) {
5
- const query = this.createQuery(SQL.ordersProducts.getAllActiveForOrderId);
6
- query.bindParameter('order_id', orderId);
7
- const result = await query.execute();
8
- return result.getRows();
9
- }
10
- async getAllActiveForOrderId(orderId) {
11
- const query = this.createQuery(SQL.ordersProducts.getAllActiveForOrderId);
12
- query.bindParameter('order_id', orderId);
13
- const result = await query.execute();
14
- return result.getRows();
15
- }
16
- async selectProducts(orderId) {
17
- const query = this.createQuery(SQL.ordersProducts.selectProducts);
4
+ async selectAllActive(orderId) {
5
+ const query = this.createQuery(SQL.ordersProducts.selectAllActive);
18
6
  query.bindParameter('order_id', orderId);
19
7
  const result = await query.execute();
20
8
  return result.getRows();
@@ -2,9 +2,8 @@ import Table from '../../Table';
2
2
  import Status from '../../stockObjects/Status';
3
3
  import StatusRow from '../../types/rows/StatusRow';
4
4
  export default class StatusesTable extends Table {
5
- selectForOrder(orderId: number): Promise<StatusRow>;
6
- selectLatest(orderId: number): Promise<StatusRow>;
7
- selectAllForOrder(orderId: number): Promise<StatusRow[]>;
5
+ select(orderId: number): Promise<StatusRow>;
6
+ selectAll(orderId: number): Promise<StatusRow[]>;
8
7
  insert(status: Status): Promise<void>;
9
8
  private bindParameters;
10
9
  private selectNextId;
@@ -1,20 +1,14 @@
1
1
  import Table from '../../Table';
2
2
  import * as SQL from '../../SQL.json';
3
3
  export default class StatusesTable extends Table {
4
- async selectForOrder(orderId) {
5
- const query = this.createQuery(SQL.statuses.selectForOrder);
4
+ async select(orderId) {
5
+ const query = this.createQuery(SQL.statuses.select);
6
6
  query.bindParameter('order_id', orderId);
7
7
  const result = await query.execute();
8
8
  return result.getRow();
9
9
  }
10
- async selectLatest(orderId) {
11
- const query = this.createQuery(SQL.statuses.selectLatest);
12
- query.bindParameter('order_id', orderId);
13
- const result = await query.execute();
14
- return result.getRow();
15
- }
16
- async selectAllForOrder(orderId) {
17
- const query = this.createQuery(SQL.statuses.selectAllForOrder);
10
+ async selectAll(orderId) {
11
+ const query = this.createQuery(SQL.statuses.selectAll);
18
12
  query.bindParameter('order_id', orderId);
19
13
  const result = await query.execute();
20
14
  return result.getRows();
@@ -4,16 +4,15 @@ import QueryOptionsI from '../../types/QueryOptionsI';
4
4
  import ProductRow from '../../types/rows/ProductRow';
5
5
  export default class ProductsTable extends Table {
6
6
  select(productId: number): Promise<ProductRow>;
7
- selectForSku(sku: string): Promise<ProductRow>;
8
- selectIdForSku(sku: string): Promise<number>;
9
- selectListForOrder(): Promise<ProductRow[]>;
10
7
  selectAll(queryOption: QueryOptionsI): Promise<ProductRow[]>;
8
+ selectAllActive(queryOption: QueryOptionsI): Promise<ProductRow[]>;
9
+ selectForSku(sku: string): Promise<ProductRow>;
11
10
  selectForUrl(url: string): Promise<ProductRow>;
11
+ selectIdForSku(sku: string): Promise<number>;
12
12
  insert(productData: Product): Promise<number>;
13
- count(queryOption: QueryOptionsI): Promise<number>;
14
13
  update(product: Product): Promise<boolean>;
15
14
  delete(productId: number): Promise<number>;
16
- restore(product: Product): Promise<number>;
15
+ count(queryOption: QueryOptionsI): Promise<number>;
17
16
  private bindParameters;
18
17
  private selectNextId;
19
18
  }
@@ -7,27 +7,21 @@ export default class ProductsTable extends Table {
7
7
  const result = await query.execute();
8
8
  return result.getRow();
9
9
  }
10
- async selectForSku(sku) {
11
- const query = this.createQuery(SQL.products.selectForSku);
12
- query.bindParameter('sku', String(sku).toUpperCase());
13
- const result = await query.execute();
14
- return result.getRow();
15
- }
16
- async selectIdForSku(sku) {
17
- const query = this.createQuery(SQL.products.selectIdForSku);
18
- query.bindParameter('sku', String(sku).toUpperCase());
10
+ async selectAll(queryOption) {
11
+ const query = this.createQuery(SQL.products.selectAll, queryOption);
19
12
  const result = await query.execute();
20
- return result.getValue();
13
+ return result.getRows();
21
14
  }
22
- async selectListForOrder() {
23
- const query = this.createQuery(SQL.products.selectListForOrder);
15
+ async selectAllActive(queryOption) {
16
+ const query = this.createQuery(SQL.products.selectAllActive, queryOption);
24
17
  const result = await query.execute();
25
18
  return result.getRows();
26
19
  }
27
- async selectAll(queryOption) {
28
- const query = this.createQuery(SQL.products.selectAll, queryOption);
20
+ async selectForSku(sku) {
21
+ const query = this.createQuery(SQL.products.selectForSku);
22
+ query.bindParameter('sku', String(sku).toUpperCase());
29
23
  const result = await query.execute();
30
- return result.getRows();
24
+ return result.getRow();
31
25
  }
32
26
  async selectForUrl(url) {
33
27
  const query = this.createQuery(SQL.products.selectForUrl);
@@ -35,6 +29,12 @@ export default class ProductsTable extends Table {
35
29
  const result = await query.execute();
36
30
  return result.getRow();
37
31
  }
32
+ async selectIdForSku(sku) {
33
+ const query = this.createQuery(SQL.products.selectIdForSku);
34
+ query.bindParameter('sku', String(sku).toUpperCase());
35
+ const result = await query.execute();
36
+ return result.getValue();
37
+ }
38
38
  async insert(productData) {
39
39
  const sku = productData.getSku();
40
40
  let productId = await this.selectIdForSku(sku);
@@ -49,11 +49,6 @@ export default class ProductsTable extends Table {
49
49
  await query.execute();
50
50
  return productId;
51
51
  }
52
- async count(queryOption) {
53
- const query = this.createQuery(SQL.products.count, queryOption);
54
- const result = await query.execute();
55
- return result.getValue();
56
- }
57
52
  async update(product) {
58
53
  const query = this.createQuery(SQL.products.update);
59
54
  query.bindParameter('id', product.getId());
@@ -67,14 +62,10 @@ export default class ProductsTable extends Table {
67
62
  const result = await query.execute();
68
63
  return result.getRowCount();
69
64
  }
70
- async restore(product) {
71
- const productId = await this.selectIdForSku(product.getSku());
72
- if (productId)
73
- throw Error(`This product cannot be restored because it has been edited. There is a newer version of this product (id: ${productId})`);
74
- const query = this.createQuery(SQL.products.restore);
75
- query.bindParameter('id', product.getId());
65
+ async count(queryOption) {
66
+ const query = this.createQuery(SQL.products.count, queryOption);
76
67
  const result = await query.execute();
77
- return result.getRowCount();
68
+ return result.getValue();
78
69
  }
79
70
  bindParameters(query, productData) {
80
71
  query.bindParameter('sku', productData.getSku());
@@ -1,8 +1,9 @@
1
1
  import AddressI from "./AddressI";
2
+ import DeliveryMethodI from "./DeliveryMethodI";
2
3
  import PersonalDataI from "./PersonalDataI";
3
4
  export default interface DeliveryDetailsI {
4
5
  id: number;
5
6
  personalData: PersonalDataI | null;
6
7
  address: AddressI | null;
7
- deliveryMethodId: number | null;
8
+ deliveryMethod: DeliveryMethodI | null;
8
9
  }
@@ -1,7 +1,6 @@
1
1
  import FileI from "./FileI";
2
2
  export default interface OrderProductI {
3
3
  id: number;
4
- productId: number;
5
4
  orderId: number;
6
5
  product: {
7
6
  id: number;
@@ -13,10 +13,8 @@ export default interface ProductI {
13
13
  width: number;
14
14
  length: number;
15
15
  height: number;
16
- fileId: number;
17
16
  thumbnail: FileI | null;
18
17
  createdAt: string;
19
18
  deleted: boolean;
20
- file?: FileI;
21
19
  files?: FileI[];
22
20
  }
@@ -1,5 +1,7 @@
1
1
  export default interface StatusI {
2
2
  id: number;
3
+ createdAt: string;
4
+ userId: number;
3
5
  typeId: number;
4
- key: string;
6
+ typeName: string;
5
7
  }
@@ -3,4 +3,8 @@ export default interface OrderProductRow {
3
3
  order_id: number;
4
4
  product_id: number;
5
5
  net_price: number;
6
+ title: string;
7
+ sku: string;
8
+ vat: number;
9
+ file_id: number;
6
10
  }
@@ -1,11 +1,15 @@
1
1
  import ParameterType from "../../types/parameters/ParameterType";
2
2
  export default class ParameterFilterSystem {
3
3
  static filter(parameter, parameterFilter) {
4
- switch (parameterFilter.type) {
5
- case ParameterType.string: return parameterFilter.filter(parameter);
6
- case ParameterType.arrayString:
7
- return parameter.map((stringParameter) => parameterFilter.filter(stringParameter));
8
- default: return parameter;
4
+ if (parameterFilter.filter && typeof parameterFilter.filter === 'function') {
5
+ switch (parameterFilter.type) {
6
+ case ParameterType.string: return parameterFilter.filter(parameter);
7
+ case ParameterType.arrayString:
8
+ return parameter.map((stringParameter) => parameterFilter.filter(stringParameter));
9
+ default: return parameter;
10
+ }
9
11
  }
12
+ else
13
+ return parameter;
10
14
  }
11
15
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dascompany/database",
3
- "version": "0.0.8",
3
+ "version": "0.0.9",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "test": "vitest",
@@ -1,7 +0,0 @@
1
- export default interface OrderStatusI {
2
- id: number;
3
- orderId: number;
4
- createdAt: string;
5
- userId: number;
6
- type: number;
7
- }
@@ -1 +0,0 @@
1
- export {};