canaille-globuzma/canaille/backends/sql/migrations/1736443094_init.py
2025-01-10 12:32:18 +01:00

313 lines
11 KiB
Python

"""initial migration
Represents the state of the database in version 0.0.56
Revision ID: 1736443094
Revises:
Create Date: 2025-01-09 18:18:14.276914
"""
from collections.abc import Sequence
import sqlalchemy as sa
import sqlalchemy_utils.types.password
from alembic import op
import canaille.backends.sql.utils
# revision identifiers, used by Alembic.
revision: str = "1736443094"
down_revision: str | None = None
branch_labels: str | Sequence[str] | None = ("default",)
depends_on: str | Sequence[str] | None = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.create_table(
"client",
sa.Column("id", sa.String(), nullable=False),
sa.Column(
"created",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.Column(
"last_modified",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.Column("description", sa.String(), nullable=True),
sa.Column("preconsent", sa.Boolean(), nullable=True),
sa.Column("post_logout_redirect_uris", sa.JSON(), nullable=True),
sa.Column("client_id", sa.String(), nullable=True),
sa.Column("client_secret", sa.String(), nullable=True),
sa.Column(
"client_id_issued_at",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.Column(
"client_secret_expires_at",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.Column("client_name", sa.String(), nullable=True),
sa.Column("contacts", sa.JSON(), nullable=True),
sa.Column("client_uri", sa.String(), nullable=True),
sa.Column("redirect_uris", sa.JSON(), nullable=True),
sa.Column("logo_uri", sa.String(), nullable=True),
sa.Column("grant_types", sa.JSON(), nullable=True),
sa.Column("response_types", sa.JSON(), nullable=True),
sa.Column("scope", sa.JSON(), nullable=True),
sa.Column("tos_uri", sa.String(), nullable=True),
sa.Column("policy_uri", sa.String(), nullable=True),
sa.Column("jwks_uri", sa.String(), nullable=True),
sa.Column("jwk", sa.String(), nullable=True),
sa.Column("token_endpoint_auth_method", sa.String(), nullable=True),
sa.Column("software_id", sa.String(), nullable=True),
sa.Column("software_version", sa.String(), nullable=True),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"group",
sa.Column("id", sa.String(), nullable=False),
sa.Column(
"created",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.Column(
"last_modified",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.Column("display_name", sa.String(), nullable=False),
sa.Column("description", sa.String(), nullable=True),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"user",
sa.Column("id", sa.String(), nullable=False),
sa.Column(
"created",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.Column(
"last_modified",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.Column("user_name", sa.String(), nullable=False),
sa.Column(
"password",
sqlalchemy_utils.types.password.PasswordType(max_length=4096),
nullable=True,
),
sa.Column("preferred_language", sa.String(), nullable=True),
sa.Column("family_name", sa.String(), nullable=True),
sa.Column("given_name", sa.String(), nullable=True),
sa.Column("formatted_name", sa.String(), nullable=True),
sa.Column("display_name", sa.String(), nullable=True),
sa.Column("emails", sa.JSON(), nullable=True),
sa.Column("phone_numbers", sa.JSON(), nullable=True),
sa.Column("formatted_address", sa.String(), nullable=True),
sa.Column("street", sa.String(), nullable=True),
sa.Column("postal_code", sa.String(), nullable=True),
sa.Column("locality", sa.String(), nullable=True),
sa.Column("region", sa.String(), nullable=True),
sa.Column("photo", sa.LargeBinary(), nullable=True),
sa.Column("profile_url", sa.String(), nullable=True),
sa.Column("employee_number", sa.String(), nullable=True),
sa.Column("department", sa.String(), nullable=True),
sa.Column("title", sa.String(), nullable=True),
sa.Column("organization", sa.String(), nullable=True),
sa.Column(
"lock_date",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("user_name"),
)
op.create_table(
"authorization_code",
sa.Column("id", sa.String(), nullable=False),
sa.Column(
"created",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.Column(
"last_modified",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.Column("authorization_code_id", sa.String(), nullable=True),
sa.Column("code", sa.String(), nullable=True),
sa.Column("client_id", sa.String(), nullable=False),
sa.Column("subject_id", sa.String(), nullable=False),
sa.Column("redirect_uri", sa.String(), nullable=True),
sa.Column("response_type", sa.String(), nullable=True),
sa.Column("scope", sa.JSON(), nullable=True),
sa.Column("nonce", sa.String(), nullable=True),
sa.Column(
"issue_date",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.Column("lifetime", sa.Integer(), nullable=True),
sa.Column("challenge", sa.String(), nullable=True),
sa.Column("challenge_method", sa.String(), nullable=True),
sa.Column(
"revokation_date",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.ForeignKeyConstraint(
["client_id"],
["client.id"],
),
sa.ForeignKeyConstraint(
["subject_id"],
["user.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"client_audience_association_table",
sa.Column("audience_id", sa.String(), nullable=True),
sa.Column("client_id", sa.String(), nullable=True),
sa.ForeignKeyConstraint(
["audience_id"],
["client.id"],
),
sa.ForeignKeyConstraint(
["client_id"],
["client.id"],
),
sa.PrimaryKeyConstraint("audience_id", "client_id"),
)
op.create_table(
"consent",
sa.Column("id", sa.String(), nullable=False),
sa.Column(
"created",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.Column(
"last_modified",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.Column("consent_id", sa.String(), nullable=True),
sa.Column("subject_id", sa.String(), nullable=False),
sa.Column("client_id", sa.String(), nullable=False),
sa.Column("scope", sa.JSON(), nullable=True),
sa.Column(
"issue_date",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.Column(
"revokation_date",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.ForeignKeyConstraint(
["client_id"],
["client.id"],
),
sa.ForeignKeyConstraint(
["subject_id"],
["user.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"membership_association_table",
sa.Column("user_id", sa.String(), nullable=False),
sa.Column("group_id", sa.String(), nullable=False),
sa.ForeignKeyConstraint(
["group_id"],
["group.id"],
),
sa.ForeignKeyConstraint(
["user_id"],
["user.id"],
),
sa.PrimaryKeyConstraint("user_id", "group_id"),
)
op.create_table(
"token",
sa.Column("id", sa.String(), nullable=False),
sa.Column(
"created",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.Column(
"last_modified",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.Column("token_id", sa.String(), nullable=True),
sa.Column("access_token", sa.String(), nullable=True),
sa.Column("client_id", sa.String(), nullable=False),
sa.Column("subject_id", sa.String(), nullable=False),
sa.Column("type", sa.String(), nullable=True),
sa.Column("refresh_token", sa.String(), nullable=True),
sa.Column("scope", sa.JSON(), nullable=True),
sa.Column(
"issue_date",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.Column("lifetime", sa.Integer(), nullable=True),
sa.Column(
"revokation_date",
canaille.backends.sql.utils.TZDateTime(timezone=True),
nullable=True,
),
sa.ForeignKeyConstraint(
["client_id"],
["client.id"],
),
sa.ForeignKeyConstraint(
["subject_id"],
["user.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"token_audience_association_table",
sa.Column("token_id", sa.String(), nullable=True),
sa.Column("client_id", sa.String(), nullable=True),
sa.ForeignKeyConstraint(
["client_id"],
["client.id"],
),
sa.ForeignKeyConstraint(
["token_id"],
["token.id"],
),
sa.PrimaryKeyConstraint("token_id", "client_id"),
)
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table("token_audience_association_table")
op.drop_table("token")
op.drop_table("membership_association_table")
op.drop_table("consent")
op.drop_table("client_audience_association_table")
op.drop_table("authorization_code")
op.drop_table("user")
op.drop_table("group")
op.drop_table("client")
# ### end Alembic commands ###