ddex_core/models/flat/
deal.rs1use crate::models::common::Price;
5use chrono::{DateTime, Utc};
6use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct ParsedDeal {
10 pub deal_id: String,
11 pub releases: Vec<String>,
12 pub validity: DealValidity,
13 pub territories: TerritoryComplexity,
14 pub distribution_channels: DistributionComplexity,
15 pub pricing: Vec<PriceTier>,
16 pub usage_rights: Vec<String>,
17 pub restrictions: Vec<String>,
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize)]
21pub struct DealValidity {
22 pub start: Option<DateTime<Utc>>,
23 pub end: Option<DateTime<Utc>>,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
27pub struct TerritoryComplexity {
28 pub included: Vec<String>,
29 pub excluded: Vec<String>,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
33pub struct DistributionComplexity {
34 pub included: Vec<String>,
35 pub excluded: Vec<String>,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
39pub struct PriceTier {
40 pub tier_name: Option<String>,
41 pub price_type: PriceType,
42 pub price: Price,
43 pub territory: Option<String>,
44 pub start_date: Option<DateTime<Utc>>,
45 pub end_date: Option<DateTime<Utc>>,
46}
47
48#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
49pub enum PriceType {
50 Wholesale,
51 SuggestedRetail,
52 Minimum,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct TerritoryInfo {
57 pub code: String,
58 pub included: bool,
59 pub start_date: Option<DateTime<Utc>>,
60 pub end_date: Option<DateTime<Utc>>,
61 pub distribution_channels: Vec<String>,
62}