generated from cfpb/open-source-project-template
-
Notifications
You must be signed in to change notification settings - Fork 1
Data Diagram
jcadam14 edited this page Mar 18, 2024
·
6 revisions
---
title: Filing API Database Classes
---
classDiagram
%%class `FilingTaskDAO(Base):`{
%% __tablename__ = "filing_task"
%% name: Mapped[str] = mapped_column#40;primary_key=True#41;
%% task_order: Mapped[int]
%%}
%%class `FilingTaskStateDAO(Base):`{
%% __tablename__ = "filing_task_state"
%% id: Mapped[int] = mapped_column#40;primary_key=True, autoincrement=True#41;
%% filing: Mapped[int] = mapped_column#40;ForeignKey#40;"filing.id"#41;#41;
%% task_name: Mapped[str] = mapped_column#40;ForeignKey#40;"filing_task.name"#41;#41;
%% user: Mapped[str] = mapped_column#40;nullable=True#41;
%% state: Mapped[enum] = mapped_column#40;server_default=TaskStateEnum.STARTED#41;
%% change_timestamp: Mapped[datetime] = mapped_column#40;server_default=datetime.now#40;#41;#41;
%%}
%%class `FilingTaskStateEnum:`{
%% NOT_STARTED,
%% IN_PROGRESS,
%% COMPLETED
%% }
class `FilingDAO(AuditMixin, Base):`{
__tablename__ = "filing"
id: Mapped[int] = mapped_column#40;primary_key=True, autoincrement=True#41;
filing_period: Mapped[str] = mapped_column#40;ForeignKey#40;"filing_period.code"#41;#41;
lei: Mapped[str]
tasks: Mapped[List[FilingTaskProgressDAO] | None] = relationship#40;lazy="selectin", cascade="all, delete-orphan"#41;
institution_snapshot_id: Mapped[str]
contact_info: Mapped[ContactInfoDAO] = relationship#40;"ContactInfoDAO", lazy="joined"#41;
confirmation_id: Mapped[str] = mapped_column#40;nullable=True#41;
}
class `FilingPeriodDAO(AuditMixin, Base):`{
__tablename__ = "filing_period"
code: Mapped[str] = mapped_column#40;primary_key=True#41;
description: Mapped[str]
start_period: Mapped[datetime]
end_period: Mapped[datetime]
due: Mapped[datetime]
filing_type: Mapped[FilingType] = mapped_column#40;Enum#40;FilingType#41;#41;
}
class `SubmissionDAO(AuditMixin, Base):`{
__tablename__ = "submission"
id: Mapped[int] = mapped_column#40;index=True, primary_key=True, autoincrement=True#41;
filing: Mapped[int] = mapped_column#40;ForeignKey#40;"filing.id"#41;#41;
submitter: Mapped[str]
state: Mapped[SubmissionState] = mapped_column#40;SAEnum#40;SubmissionState#41;#41;
validation_ruleset_version: Mapped[str] = mapped_column#40;nullable=True#41;
validation_json: Mapped[dict[str, Any]] = mapped_column#40;JSON, nullable=True#41;
submission_time: Mapped[datetime] = mapped_column#40;server_default=func.now#40;#41;#41;
filename: Mapped[str]
accepter: Mapped[str] = mapped_column#40;nullable=True#41;
}
class `ContactInfoDAO(Base):`{
__tablename__ = "contact_info"
id: Mapped[int] = mapped_column#40;primary_key=True, autoincrement=True#41;
filing: Mapped[int] = mapped_column#40;ForeignKey#40;"filing.id"#41;#41;
first_name: Mapped[str]
last_name: Mapped[str]
hq_address_street_1: Mapped[str]
hq_address_street_2: Mapped[str] = mapped_column#40;nullable=True#41;
hq_address_city: Mapped[str]
hq_address_state: Mapped[str]
hq_address_zip: Mapped[str] = mapped_column#40;String#40;5#41;#41;
email: Mapped[str]
phone: Mapped[str]
}
class `SubmissionState(str, Enum):`{
SUBMISSION_UPLOADED = "SUBMISSION_UPLOADED"
VALIDATION_IN_PROGRESS = "VALIDATION_IN_PROGRESS"
VALIDATION_WITH_ERRORS = "VALIDATION_WITH_ERRORS"
VALIDATION_WITH_WARNINGS = "VALIDATION_WITH_WARNINGS"
VALIDATION_SUCCESSFUL = "VALIDATION_SUCCESSFUL"
SUBMISSION_ACCEPTED = "SUBMISSION_ACCEPTED"
SUBMISSION_STARTED = "SUBMISSION_STARTED"
}
`FilingPeriodDAO(AuditMixin, Base):` *-- `FilingDAO(AuditMixin, Base):`
`FilingDAO(AuditMixin, Base):` *-- `SubmissionDAO(AuditMixin, Base):`
`FilingDAO(AuditMixin, Base):` *-- `ContactInfoDAO(Base):`
`SubmissionDAO(AuditMixin, Base):` *-- `SubmissionState(str, Enum):`
%%`FilingTaskStateDAO(Base):` *-- `FilingTaskDAO(Base):`
%%`FilingTaskStateDAO(Base):` *-- `FilingTaskStateEnum:`
- Filing Period JSON
- Filing JSON
- SnapshotUpdate JSON
- Contact Info JSON
- Submission JSON
- Validation JSON
- Voluntary JSON
- Sequences ‐ Get Filing Periods
- Sequences ‐ Get Filing
- Sequences ‐ Create New Filing
- Sequences ‐ Update Filing
- Sequences ‐ Get Submission
- Sequences ‐ Post Submission
- Sequences ‐ Validate Submission
- Sequences ‐ Get Contact Info
- Sequences ‐ Update Contact Info
- Sequences ‐ Sign Filing
- Sequences ‐ Verify LEI is Active