542 lines
22 KiB
Python
542 lines
22 KiB
Python
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)
|