forked from Github-Mirrors/canaille
313 lines
11 KiB
Python
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 ###
|