in migrations/versions/0001_2025.05.06_38b0d2de.py [0:0]
def upgrade() -> None:
op.create_table(
"committee",
sa.Column("name", sa.String(), nullable=False),
sa.Column("full_name", sa.String(), nullable=True),
sa.Column("is_podling", sa.Boolean(), nullable=False),
sa.Column("parent_committee_name", sa.String(), nullable=True),
sa.Column("committee_members", sa.JSON(), nullable=True),
sa.Column("committers", sa.JSON(), nullable=True),
sa.Column("release_managers", sa.JSON(), nullable=True),
sa.ForeignKeyConstraint(
["parent_committee_name"],
["committee.name"],
),
sa.PrimaryKeyConstraint("name"),
sa.UniqueConstraint("name"),
)
op.create_table(
"publicsigningkey",
sa.Column("fingerprint", sa.String(), nullable=False),
sa.Column("algorithm", sa.Integer(), nullable=False),
sa.Column("length", sa.Integer(), nullable=False),
sa.Column("created", atr.db.models.UTCDateTime(timezone=True), nullable=True),
sa.Column("expires", atr.db.models.UTCDateTime(timezone=True), nullable=True),
sa.Column("declared_uid", sa.String(), nullable=True),
sa.Column("apache_uid", sa.String(), nullable=False),
sa.Column("ascii_armored_key", sa.String(), nullable=False),
sa.PrimaryKeyConstraint("fingerprint"),
sa.UniqueConstraint("fingerprint"),
)
op.create_table(
"releasepolicy",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("mailto_addresses", sa.JSON(), nullable=True),
sa.Column("manual_vote", sa.Boolean(), nullable=False),
sa.Column("min_hours", sa.Integer(), nullable=False),
sa.Column("release_checklist", sa.String(), nullable=False),
sa.Column("pause_for_rm", sa.Boolean(), nullable=False),
sa.Column("start_vote_template", sa.String(), nullable=False),
sa.Column("announce_release_template", sa.String(), nullable=False),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"sshkey",
sa.Column("fingerprint", sa.String(), nullable=False),
sa.Column("key", sa.String(), nullable=False),
sa.Column("asf_uid", sa.String(), nullable=False),
sa.PrimaryKeyConstraint("fingerprint"),
)
op.create_table(
"textvalue",
sa.Column("ns", sa.String(), nullable=False),
sa.Column("key", sa.String(), nullable=False),
sa.Column("value", sa.String(), nullable=False),
sa.PrimaryKeyConstraint("ns", "key"),
)
op.create_index(op.f("ix_textvalue_key"), "textvalue", ["key"], unique=False)
op.create_index(op.f("ix_textvalue_ns"), "textvalue", ["ns"], unique=False)
op.create_table(
"keylink",
sa.Column("committee_name", sa.String(), nullable=False),
sa.Column("key_fingerprint", sa.String(), nullable=False),
sa.ForeignKeyConstraint(
["committee_name"],
["committee.name"],
),
sa.ForeignKeyConstraint(
["key_fingerprint"],
["publicsigningkey.fingerprint"],
),
sa.PrimaryKeyConstraint("committee_name", "key_fingerprint"),
)
op.create_table(
"project",
sa.Column("name", sa.String(), nullable=False),
sa.Column("full_name", sa.String(), nullable=True),
sa.Column("is_podling", sa.Boolean(), nullable=False),
sa.Column("is_retired", sa.Boolean(), nullable=False),
sa.Column("super_project_name", sa.String(), nullable=True),
sa.Column("description", sa.String(), nullable=True),
sa.Column("category", sa.String(), nullable=True),
sa.Column("programming_languages", sa.String(), nullable=True),
sa.Column("committee_name", sa.String(), nullable=True),
sa.Column("release_policy_id", sa.Integer(), nullable=True),
sa.Column("created", atr.db.models.UTCDateTime(timezone=True), nullable=True),
sa.Column("created_by", sa.String(), nullable=True),
sa.ForeignKeyConstraint(
["committee_name"],
["committee.name"],
),
sa.ForeignKeyConstraint(["release_policy_id"], ["releasepolicy.id"], ondelete="CASCADE"),
sa.ForeignKeyConstraint(
["super_project_name"],
["project.name"],
),
sa.PrimaryKeyConstraint("name"),
sa.UniqueConstraint("name"),
)
op.create_table(
"distributionchannel",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("name", sa.String(), nullable=False),
sa.Column("url", sa.String(), nullable=False),
sa.Column("credentials", sa.String(), nullable=False),
sa.Column("is_test", sa.Boolean(), nullable=False),
sa.Column("automation_endpoint", sa.String(), nullable=False),
sa.Column("project_name", sa.String(), nullable=False),
sa.ForeignKeyConstraint(
["project_name"],
["project.name"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(op.f("ix_distributionchannel_name"), "distributionchannel", ["name"], unique=True)
op.create_table(
"release",
sa.Column("name", sa.String(), nullable=False),
sa.Column(
"stage", sa.Enum("RELEASE_CANDIDATE", "RELEASE", "MIGRATION", "FAILED", name="releasestage"), nullable=False
),
sa.Column(
"phase",
sa.Enum("RELEASE_CANDIDATE_DRAFT", "RELEASE_CANDIDATE", "RELEASE_PREVIEW", "RELEASE", name="releasephase"),
nullable=False,
),
sa.Column("created", atr.db.models.UTCDateTime(timezone=True), nullable=True),
sa.Column("released", atr.db.models.UTCDateTime(timezone=True), nullable=True),
sa.Column("project_name", sa.String(), nullable=False),
sa.Column("package_managers", sa.JSON(), nullable=True),
sa.Column("version", sa.String(), nullable=False),
sa.Column("revision", sa.String(), nullable=True),
sa.Column("sboms", sa.JSON(), nullable=True),
sa.Column("release_policy_id", sa.Integer(), nullable=True),
sa.Column("votes", sa.JSON(), nullable=True),
sa.Column("vote_started", atr.db.models.UTCDateTime(timezone=True), nullable=True),
sa.Column("vote_resolved", atr.db.models.UTCDateTime(timezone=True), nullable=True),
sa.ForeignKeyConstraint(
["project_name"],
["project.name"],
),
sa.ForeignKeyConstraint(
["release_policy_id"],
["releasepolicy.id"],
),
sa.PrimaryKeyConstraint("name"),
sa.UniqueConstraint("name"),
sa.UniqueConstraint("project_name", "version", name="unique_project_version"),
)
op.create_index(op.f("ix_release_revision"), "release", ["revision"], unique=False)
op.create_table(
"checkresult",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("release_name", sa.String(), nullable=False),
sa.Column("checker", sa.String(), nullable=False),
sa.Column("primary_rel_path", sa.String(), nullable=True),
sa.Column("created", atr.db.models.UTCDateTime(timezone=True), nullable=True),
sa.Column(
"status", sa.Enum("EXCEPTION", "FAILURE", "SUCCESS", "WARNING", name="checkresultstatus"), nullable=False
),
sa.Column("message", sa.String(), nullable=False),
sa.Column("data", sa.JSON(), nullable=True),
sa.ForeignKeyConstraint(
["release_name"],
["release.name"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(op.f("ix_checkresult_primary_rel_path"), "checkresult", ["primary_rel_path"], unique=False)
op.create_table(
"task",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("status", sa.Enum("QUEUED", "ACTIVE", "COMPLETED", "FAILED", name="taskstatus"), nullable=False),
sa.Column(
"task_type",
sa.Enum(
"HASHING_CHECK",
"LICENSE_FILES",
"LICENSE_HEADERS",
"MESSAGE_SEND",
"PATHS_CHECK",
"RAT_CHECK",
"SBOM_GENERATE_CYCLONEDX",
"SIGNATURE_CHECK",
"SVN_IMPORT_FILES",
"TARGZ_INTEGRITY",
"TARGZ_STRUCTURE",
"VOTE_INITIATE",
"ZIPFORMAT_INTEGRITY",
"ZIPFORMAT_LICENSE_FILES",
"ZIPFORMAT_LICENSE_HEADERS",
"ZIPFORMAT_STRUCTURE",
name="tasktype",
),
nullable=False,
),
sa.Column("task_args", sa.JSON(), nullable=True),
sa.Column("added", atr.db.models.UTCDateTime(timezone=True), nullable=True),
sa.Column("started", atr.db.models.UTCDateTime(timezone=True), nullable=True),
sa.Column("pid", sa.Integer(), nullable=True),
sa.Column("completed", atr.db.models.UTCDateTime(timezone=True), nullable=True),
sa.Column("result", sa.JSON(), nullable=True),
sa.Column("error", sa.String(), nullable=True),
sa.Column("release_name", sa.String(), nullable=True),
sa.Column("draft_revision", sa.String(), nullable=True),
sa.Column("primary_rel_path", sa.String(), nullable=True),
sa.CheckConstraint(