-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodels.py
More file actions
113 lines (101 loc) · 3.93 KB
/
Copy pathmodels.py
File metadata and controls
113 lines (101 loc) · 3.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import enum
from sqlalchemy import Column, String, Integer, Text, Numeric, DateTime, ForeignKey, Enum as SQLEnum
from sqlalchemy.orm import declarative_base, relationship
Base = declarative_base()
class ResponseEnum(str, enum.Enum):
ACCEPT = 'accept'
DECLINE = 'decline'
class RoleEnum(str, enum.Enum):
ADMIN = 'Admin'
SYSTEM = 'System'
SELLER = 'Seller'
BUYER = 'Buyer'
class StatusEnum(str, enum.Enum):
PENDING = 'PENDING'
SIGNED = 'SIGNED'
DECLINED = 'DECLINED'
EFFECTIVE = 'EFFECTIVE'
REQUESTED = 'REQUESTED'
TRANSFERRED_TO_SELLER = 'TRANSFERRED to Seller'
TRANSFERRED_TO_BUYER = 'TRANSFERRED to Buyer'
DISPUTED = 'DISPUTED'
PROCESSING_LOCKED = 'PROCESSING: Locked'
DECIDED_LOCKED = 'DECIDED: Locked'
UNDER_REVIEW_LOCKED = 'UNDER REVIEW: Locked'
DISTRIBUTED = 'DISTRIBUTED'
CLOSED_NO_ESCROW = 'CLOSED: No Escrow'
CLOSED_NO_AWARD = 'CLOSED: No Award'
CLOSED = 'CLOSED' # General closed fallback
class LabelEnum(str, enum.Enum):
SETUP = 'Setup'
DISPUTE = 'Dispute'
GENERAL = 'General'
EMAIL = 'Email'
APPEAL = 'Appeal'
REQUEST_PAYMENT = 'Request Payment'
REQUEST_REFUND = 'Request Refund'
EVIDENCE = 'Evidence'
class Case(Base):
__tablename__ = 'cases'
case_id = Column(String(50), primary_key=True)
created_at = Column(DateTime(timezone=True))
seller = Column(String(255))
buyer = Column(String(255))
seller_email = Column(String(255))
buyer_email = Column(String(255))
seller_token = Column(String(255))
buyer_token = Column(String(255))
seller_wallet = Column(String(255))
buyer_wallet = Column(String(255))
contract_text = Column(Text)
seller_response = Column(SQLEnum(ResponseEnum))
buyer_response = Column(SQLEnum(ResponseEnum))
folder_link = Column(Text)
escrow_address = Column(String(255))
escrow_fund = Column(Numeric(38, 0))
fee = Column(Numeric(38, 0))
deposited_fund = Column(Numeric(38, 0))
payment_to_seller = Column(Numeric(38, 0))
refund_to_buyer = Column(Numeric(38, 0))
tip_to_seller = Column(Numeric(38, 0))
buyer_withdrawal = Column(Numeric(38, 0))
status = Column(SQLEnum(StatusEnum))
payment_request_time = Column(DateTime(timezone=True))
refund_request_time = Column(DateTime(timezone=True))
requested_payment_amount = Column(Numeric(38, 0))
requested_refund_amount = Column(Numeric(38, 0))
dispute_time = Column(DateTime(timezone=True))
adjudication_time = Column(DateTime(timezone=True))
determination_time = Column(DateTime(timezone=True))
decision = Column(Text)
seller_award = Column(Numeric(38, 0))
buyer_award = Column(Numeric(38, 0))
seller_payout = Column(Numeric(38, 0))
buyer_payout = Column(Numeric(38, 0))
appeal_time = Column(DateTime(timezone=True))
messages = relationship("Message", back_populates="case")
files = relationship("File", back_populates="case")
class Message(Base):
__tablename__ = 'messages'
id = Column(Integer, primary_key=True, autoincrement=True)
case_id = Column(String(50), ForeignKey('cases.case_id'))
time = Column(DateTime(timezone=True))
sender = Column(SQLEnum(RoleEnum))
email = Column(String(255))
content = Column(Text)
label = Column(SQLEnum(LabelEnum))
case = relationship("Case", back_populates="messages")
files = relationship("File", back_populates="message")
class File(Base):
__tablename__ = 'files'
file_id = Column(String(255), primary_key=True)
case_id = Column(String(50), ForeignKey('cases.case_id'))
message_id = Column(Integer, ForeignKey('messages.id'))
time = Column(DateTime(timezone=True))
submitter = Column(SQLEnum(RoleEnum))
email = Column(String(255))
original_name = Column(String(500))
secure_name = Column(String(500))
hash = Column(String(255))
case = relationship("Case", back_populates="files")
message = relationship("Message", back_populates="files")