v2.3
This commit is contained in:
@@ -0,0 +1,541 @@
|
||||
from sqlalchemy import Column, BigInteger, Integer, String, DateTime, Text, Boolean, Float, Index, UniqueConstraint
|
||||
from .database import Base
|
||||
import datetime
|
||||
|
||||
|
||||
class Role(Base):
|
||||
__tablename__ = "role"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
name = Column(String(100), nullable=False, unique=True)
|
||||
description = Column(String(255))
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
# relationships
|
||||
# relationships are intentionally omitted; handle joins in SQL queries as needed
|
||||
|
||||
|
||||
class Permission(Base):
|
||||
__tablename__ = "permission"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
name = Column(String(255), nullable=False)
|
||||
path = Column(String(255), nullable=False)
|
||||
method = Column(String(20), nullable=False)
|
||||
description = Column(String(255))
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
# relationships intentionally omitted
|
||||
|
||||
|
||||
|
||||
|
||||
class Unit(Base):
|
||||
__tablename__ = "units"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
name = Column(String(255), nullable=False)
|
||||
description = Column(Text)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
# relationships intentionally omitted
|
||||
|
||||
__table_args__ = (Index('ix_units_name', 'name'),)
|
||||
|
||||
|
||||
class User(Base):
|
||||
|
||||
__tablename__ = "users"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
email = Column(String(255), nullable=False, unique=True)
|
||||
fullname = Column(String(255), nullable=False)
|
||||
unit_id = Column(BigInteger, nullable=True)
|
||||
role_id = Column(BigInteger, nullable=True)
|
||||
status = Column(Integer, default=1)
|
||||
#status 1 is created, 2 is active, 3 is disabled
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
updated_at = Column(DateTime, default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow)
|
||||
hashed_password = Column(String(255), nullable=True)
|
||||
|
||||
# relationships intentionally omitted
|
||||
|
||||
__table_args__ = (Index('ix_users_email', 'email'),)
|
||||
|
||||
class Category(Base):
|
||||
__tablename__ = "category"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
name = Column(String(255), nullable=False, unique=True)
|
||||
|
||||
# relationships intentionally omitted
|
||||
|
||||
|
||||
class Post(Base):
|
||||
__tablename__ = "posts"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
content = Column(Text, nullable=False)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
title = Column(String(255), nullable=False)
|
||||
created_by = Column(BigInteger)
|
||||
category_id = Column(BigInteger)
|
||||
status = Column(Boolean, default=True)
|
||||
thumbnail = Column(String(255), nullable=True)
|
||||
|
||||
# relationships intentionally omitted
|
||||
|
||||
|
||||
class Month(Base):
|
||||
__tablename__ = "month"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
name = Column(String(50), nullable=False)
|
||||
from_date = Column(DateTime, nullable=False)
|
||||
end_date = Column(DateTime, nullable=False)
|
||||
|
||||
# relationships intentionally omitted
|
||||
|
||||
|
||||
class NAC(Base):
|
||||
__tablename__ = "nac"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
month_id = Column(BigInteger, nullable=False)
|
||||
unit_id = Column(BigInteger, nullable=False)
|
||||
total = Column(BigInteger, default=0)
|
||||
installed = Column(BigInteger, default=0)
|
||||
ignored = Column(BigInteger, default=0)
|
||||
rate = Column(Float, default=0)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
# relationships intentionally omitted
|
||||
|
||||
|
||||
class SmartIR(Base):
|
||||
__tablename__ = "smartir"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
month_id = Column(BigInteger, nullable=False)
|
||||
unit_id = Column(BigInteger, nullable=False)
|
||||
total = Column(BigInteger, default=0)
|
||||
installed = Column(BigInteger, default=0)
|
||||
new_install = Column(BigInteger, default=0)
|
||||
ignored = Column(BigInteger, default=0)
|
||||
rate = Column(Float, default=0)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
# relationships intentionally omitted
|
||||
|
||||
|
||||
class Compliance(Base):
|
||||
__tablename__ = "compliance"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
month_id = Column(BigInteger, nullable=False)
|
||||
unit_id = Column(BigInteger, nullable=False)
|
||||
windows_key = Column(BigInteger, default=0)
|
||||
office = Column(BigInteger, default=0)
|
||||
ms17010 = Column(BigInteger, default=0)
|
||||
firewall = Column(BigInteger, default=0)
|
||||
uac = Column(BigInteger, default=0)
|
||||
winrar = Column(BigInteger, default=0)
|
||||
antivirus = Column(BigInteger, default=0)
|
||||
update_win = Column(BigInteger, default=0)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
# relationships intentionally omitted
|
||||
|
||||
|
||||
class LogSource(Base):
|
||||
__tablename__ = "logsource"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
month_id = Column(BigInteger, nullable=False)
|
||||
unit_id = Column(BigInteger, nullable=False)
|
||||
log_id = Column(BigInteger)
|
||||
name = Column(String(255), nullable=False)
|
||||
description = Column(Text)
|
||||
is_enabled = Column(Boolean, default=True)
|
||||
source_type_id = Column(BigInteger)
|
||||
status = Column(Integer) # lưu mã 1=OK, 2=ERROR, 3=DISABLE, 4=NOT AVAILABLE
|
||||
message = Column(String(255))
|
||||
other = Column(String(255))
|
||||
file_id = Column(BigInteger, nullable=True)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
# relationships intentionally omitted
|
||||
|
||||
|
||||
class LogSourceComment(Base):
|
||||
__tablename__ = "logsource_comment"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
logsource_id = Column(BigInteger, nullable=False)
|
||||
user_id = Column(BigInteger, nullable=False)
|
||||
comment = Column(Text, nullable=False)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
|
||||
class SourceType(Base):
|
||||
__tablename__ = "source_type"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
name = Column(String(255), nullable=False)
|
||||
type = Column(String(100))
|
||||
|
||||
# relationships intentionally omitted
|
||||
|
||||
|
||||
class Ticket(Base):
|
||||
__tablename__ = "ticket"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
open_count = Column(BigInteger, default=0)
|
||||
in_process = Column(BigInteger, default=0)
|
||||
completed = Column(BigInteger, default=0)
|
||||
unit_id = Column(BigInteger, nullable=False)
|
||||
month_id = Column(BigInteger, nullable=False)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
# relationships intentionally omitted
|
||||
|
||||
|
||||
class RootAccess(Base):
|
||||
__tablename__ = "root_access"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
month_id = Column(BigInteger, nullable=False)
|
||||
unit_id = Column(BigInteger, nullable=False)
|
||||
number = Column(BigInteger, default=0)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
# relationships intentionally omitted
|
||||
|
||||
|
||||
class AttackStatics(Base):
|
||||
__tablename__ = "attack_statics"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
month_id = Column(BigInteger, nullable=False)
|
||||
siem_fintech = Column(BigInteger, default=0)
|
||||
siem_media = Column(BigInteger, default=0)
|
||||
ticket = Column(BigInteger, default=0)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
# relationships intentionally omitted
|
||||
|
||||
|
||||
class SmartIRDetail(Base):
|
||||
__tablename__ = "smartir_detail"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
month_id = Column(BigInteger, nullable=False)
|
||||
unit_id = Column(BigInteger, nullable=True)
|
||||
vnpt_ma_nhan_vien = Column(String(255), nullable=True)
|
||||
name = Column(String(255), nullable=True)
|
||||
email = Column(String(255), nullable=True)
|
||||
phong_ban = Column(String(255), nullable=True)
|
||||
ip = Column(String(255), nullable=True)
|
||||
pc_name = Column(String(255), nullable=True)
|
||||
mac = Column(String(255), nullable=True)
|
||||
agent_version = Column(String(255), nullable=True)
|
||||
last_online = Column(String(255), nullable=True)
|
||||
status = Column(Integer, nullable=True)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
# relationships intentionally omitted
|
||||
|
||||
class NACDetail(Base):
|
||||
__tablename__ = "nac_detail"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
month_id = Column(BigInteger, nullable=False)
|
||||
unit_id = Column(BigInteger, nullable=True)
|
||||
name = Column(String(255), nullable=True)
|
||||
email = Column(String(255), nullable=True)
|
||||
status = Column(Integer, nullable=True)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
class ComplianceDetail(Base):
|
||||
__tablename__ = "compliance_detail"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
unit_id = Column(BigInteger, nullable=True)
|
||||
month_id = Column(BigInteger, nullable=False)
|
||||
vnpt_ma_nhan_vien = Column(String(255), nullable=True)
|
||||
name = Column(String(255), nullable=True)
|
||||
email = Column(String(255), nullable=True)
|
||||
phong_ban = Column(String(255), nullable=True)
|
||||
windows_key = Column(BigInteger, nullable=True)
|
||||
office = Column(BigInteger, nullable=True)
|
||||
ms17010 = Column(BigInteger, nullable=True)
|
||||
firewall = Column(BigInteger, nullable=True)
|
||||
uac = Column(BigInteger, nullable=True)
|
||||
winrar = Column(BigInteger, nullable=True)
|
||||
antivirus = Column(BigInteger, nullable=True)
|
||||
update_win = Column(BigInteger, nullable=True)
|
||||
status = Column(Integer, nullable=True)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
class ComplianceSmartIR(Base):
|
||||
__tablename__ = "compliance_smartir"
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
month_id = Column(BigInteger, nullable=False)
|
||||
unit_id = Column(BigInteger, nullable=True)
|
||||
vnpt_ma_nhan_vien = Column(String(20), nullable=False)
|
||||
name = Column(String(255), nullable=False)
|
||||
email = Column(String(255), nullable=False)
|
||||
phong_ban = Column(String(255), nullable=True)
|
||||
ten_may_tinh = Column(String(255), nullable=True)
|
||||
mac = Column(String(50), nullable=True)
|
||||
active_windows = Column(Integer, nullable=True)
|
||||
bat_windows_firewall = Column(Integer, nullable=True)
|
||||
bat_uac = Column(Integer, nullable=True)
|
||||
cai_winrar_ban_moi = Column(Integer, nullable=True)
|
||||
bat_av_fullscan = Column(Integer, nullable=True)
|
||||
update_windows = Column(Integer, nullable=True)
|
||||
status = Column(Integer, nullable=False, default=0)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
updated_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
class MailHistory(Base):
|
||||
__tablename__ = "mail_history"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
post_id = Column(BigInteger)
|
||||
subject = Column(String(255), nullable=True)
|
||||
role_id = Column(BigInteger, nullable=True)
|
||||
content = Column(Text)
|
||||
status = Column(Integer, nullable=True)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
# relationships intentionally omitted
|
||||
|
||||
|
||||
class FileUpload(Base):
|
||||
__tablename__ = "file_upload"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
path = Column(String(255), nullable=False)
|
||||
table_name = Column(String(255), nullable=False)
|
||||
table_id = Column(BigInteger, nullable=False)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
__table_args__ = (Index('ix_fileupload_table', 'table_name', 'table_id'),)
|
||||
|
||||
|
||||
class ImportHistory(Base):
|
||||
__tablename__ = "import_history"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
type = Column(String(255), nullable=False)
|
||||
file_path = Column(String(255), nullable=False)
|
||||
month_id = Column(BigInteger, nullable=False)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
__table_args__ = (Index('ix_import_history_type_month', 'type', 'month_id'),)
|
||||
|
||||
|
||||
class MMFintech(Base):
|
||||
__tablename__ = "mm_fintech"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True, index=True)
|
||||
month_id = Column(BigInteger, nullable=False, index=True)
|
||||
unit_id = Column(BigInteger, nullable=True, index=True)
|
||||
file_path = Column(String(255), nullable=False)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
class ConvertHardening(Base):
|
||||
__tablename__ = "convert_hardening"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True, index=True)
|
||||
filename = Column(String(255), nullable=False, index=True)
|
||||
user_id = Column(BigInteger, nullable=False, index=True)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
|
||||
class SystemGroup(Base):
|
||||
__tablename__ = "system_group"
|
||||
|
||||
id = Column(BigInteger, primary_key=True, index=True, autoincrement=True)
|
||||
name = Column(String(255), nullable=False, index=True)
|
||||
description = Column(String(1000), nullable=True)
|
||||
|
||||
class System(Base):
|
||||
__tablename__ = "system"
|
||||
|
||||
id = Column(BigInteger, primary_key=True, index=True, autoincrement=True)
|
||||
name = Column(String(255), nullable=False, index=True)
|
||||
url_ip = Column(String(255), nullable=True, index=True)
|
||||
unit_id = Column(BigInteger, nullable=True, index=True)
|
||||
system_group_id = Column(BigInteger, nullable=True, index=True)
|
||||
description = Column(String(1000), nullable=True)
|
||||
status = Column(Integer, nullable=True, index=True)
|
||||
|
||||
class ManageSystem(Base):
|
||||
__tablename__ = "manage_system"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
name = Column(String(255), nullable=False, unique=True)
|
||||
level = Column(Integer, nullable=False)
|
||||
url_ip = Column(String(255), nullable=True)
|
||||
unit_id = Column(BigInteger, nullable=True)
|
||||
parent_id = Column(BigInteger, nullable=True)
|
||||
type = Column(Integer, nullable=True)
|
||||
private = Column(Boolean, default=False)
|
||||
priority_level = Column(Integer, nullable=True)
|
||||
status = Column(Boolean, default=True)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
updated_at = Column(DateTime, default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow)
|
||||
__table_args__ = (
|
||||
Index('ix_manage_system_name', 'name'),
|
||||
Index('ix_manage_system_level_parent', 'level', 'parent_id'),
|
||||
Index('ix_manage_system_unit', 'unit_id'),
|
||||
)
|
||||
|
||||
class PentestService(Base):
|
||||
__tablename__ = "pentest_service"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
name = Column(Text, nullable=True)
|
||||
type = Column(Integer, nullable=False) # 1: Đánh giá ATTT, 2: Công việc phối hợp, 3: Phối hợp xử lý, 4: Khác
|
||||
code = Column(String(50), nullable=False, unique=True)
|
||||
file_path = Column(String(255), nullable=True)
|
||||
description = Column(Text, nullable=True)
|
||||
due_date = Column(DateTime, nullable=True)
|
||||
unit_id = Column(BigInteger, nullable=True)
|
||||
status = Column(Integer, default=0) # 0: nháp, 1: tạo mới, 2: tiếp nhận, 3: đã xử lý, 4: đóng, 5: hủy
|
||||
user_id = Column(BigInteger, nullable=True)
|
||||
target_id = Column(BigInteger, nullable=True)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
class PentestServiceComment(Base):
|
||||
__tablename__ = "pentest_service_comment"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
pentest_service_id = Column(BigInteger, nullable=False)
|
||||
content = Column(Text, nullable=False)
|
||||
user_id = Column(BigInteger, nullable=False)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
class PentestServiceHistory(Base):
|
||||
__tablename__ = "pentest_service_history"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
pentest_service_id = Column(BigInteger, nullable=False)
|
||||
old_status = Column(Integer, nullable=True)
|
||||
new_status = Column(Integer, nullable=False)
|
||||
user_id = Column(BigInteger, nullable=False)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
class PentestServiceAssign(Base):
|
||||
__tablename__ = "pentest_service_assign"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
user_id = Column(BigInteger, nullable=True)
|
||||
email = Column(String(255), nullable=True)
|
||||
pentest_service_id = Column(BigInteger, nullable=False)
|
||||
|
||||
|
||||
|
||||
class RevokedToken(Base):
|
||||
__tablename__ = "revoked_token"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
jti = Column(String(64), nullable=False, unique=True, index=True)
|
||||
user_id = Column(BigInteger, nullable=True)
|
||||
revoked_at = Column(DateTime, default=datetime.datetime.utcnow, nullable=False)
|
||||
expires_at = Column(DateTime, nullable=True)
|
||||
|
||||
|
||||
class EmailRole(Base):
|
||||
__tablename__ = "email_role"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
name = Column(String(255), nullable=False)
|
||||
description = Column(String(1000), nullable=True)
|
||||
|
||||
|
||||
class EmailUser(Base):
|
||||
__tablename__ = "email_user"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
email = Column(String(255), nullable=False)
|
||||
name = Column(String(255), nullable=True)
|
||||
role_id = Column(BigInteger, nullable=False)
|
||||
type = Column(Integer, nullable=False)
|
||||
__table_args__ = (Index('ix_email_user_role', 'role_id'),)
|
||||
|
||||
|
||||
class Document(Base):
|
||||
__tablename__ = "documents"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
name = Column(String(255), nullable=False)
|
||||
number_doc = Column(String(255), nullable=False)
|
||||
sign_date = Column(DateTime, nullable=True)
|
||||
level = Column(Integer, nullable=False)
|
||||
validate_date = Column(DateTime, nullable=True)
|
||||
file_path = Column(String(255), nullable=True)
|
||||
|
||||
|
||||
class SecurityIndex(Base):
|
||||
__tablename__ = "security_index"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True, index=True)
|
||||
soc = Column(Integer, default=0)
|
||||
pentest = Column(Integer, default=0)
|
||||
access_policy = Column(Integer, default=0)
|
||||
two_fa_policy = Column(Integer, default=0) # Cannot start with digit in Python, mapped to 2fa_policy if needed
|
||||
config_network = Column(Integer, default=0)
|
||||
config_server = Column(Integer, default=0)
|
||||
patch_security = Column(Integer, default=0)
|
||||
month_id = Column(BigInteger, nullable=False, index=True)
|
||||
unit_id = Column(BigInteger, nullable=False, index=True)
|
||||
description = Column(Text, nullable=True)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
class SocTarget(Base):
|
||||
__tablename__ = "soc_target"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
unit_id = Column(BigInteger, nullable=False)
|
||||
priority = Column(Integer, nullable=False) # 1=critical → 5=low
|
||||
name = Column(String(255), nullable=False)
|
||||
code = Column(String(100), unique=True)
|
||||
status = Column(Integer, nullable=False, default=0) # 0:Open, 1:In Progress, 2:Resolved, 3:Closed
|
||||
deadline = Column(DateTime)
|
||||
description = Column(Text, nullable=False)
|
||||
system_id = Column(BigInteger, nullable=True)
|
||||
system_type = Column(Integer, nullable=True)
|
||||
source_ip = Column(Text, nullable=True)
|
||||
destination_ip = Column(Text, nullable=True)
|
||||
soc_target_type_id = Column(BigInteger, nullable=True)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
updated_at = Column(DateTime, default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow)
|
||||
created_by = Column(BigInteger, nullable=True)
|
||||
|
||||
class SocTargetType(Base):
|
||||
__tablename__ = "soc_target_type"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
name = Column(String(255), nullable=False)
|
||||
|
||||
class TicketRelated(Base):
|
||||
__tablename__ = "ticket_related"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
soc_target_id = Column(BigInteger, nullable=False)
|
||||
related_soc_target_id = Column(BigInteger, nullable=False)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
class SocTargetAssign(Base):
|
||||
__tablename__ = "soc_target_assign"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
target_id = Column(BigInteger, nullable=False)
|
||||
user_id = Column(BigInteger, nullable=True)
|
||||
email = Column(String(255), nullable=True)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
class SocTargetHistory(Base):
|
||||
__tablename__ = "soc_target_history"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
target_id = Column(BigInteger, nullable=False)
|
||||
field_name = Column(String(100), nullable=False)
|
||||
old_value = Column(Text)
|
||||
new_value = Column(Text)
|
||||
changed_by = Column(BigInteger, nullable=True)
|
||||
changed_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
class SocTargetComment(Base):
|
||||
__tablename__ = "soc_target_comment"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
target_id = Column(BigInteger, nullable=False)
|
||||
user_id = Column(BigInteger, nullable=True)
|
||||
email = Column(String(255), nullable=True)
|
||||
content = Column(Text, nullable=False)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
updated_at = Column(DateTime, default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow)
|
||||
|
||||
class SocTargetAttachment(Base):
|
||||
__tablename__ = "soc_target_attachment"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
target_id = Column(BigInteger, nullable=False)
|
||||
file_name = Column(String(255), nullable=False)
|
||||
file_path = Column(String(500), nullable=False)
|
||||
file_size = Column(BigInteger, nullable=True)
|
||||
file_type = Column(String(100), nullable=True)
|
||||
uploaded_by = Column(BigInteger, nullable=True)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
|
||||
class PostComment(Base):
|
||||
__tablename__ = "post_comment"
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
post_id = Column(BigInteger, nullable=False)
|
||||
user_id = Column(BigInteger, nullable=False)
|
||||
content = Column(Text, nullable=False)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
updated_at = Column(DateTime, default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow)
|
||||
Reference in New Issue
Block a user