From d6f7b6c587ead35746c25a49989d18fb03981a5e Mon Sep 17 00:00:00 2001 From: Mart van Santen <mart@greenhost.nl> Date: Thu, 18 Nov 2021 11:49:36 +0100 Subject: [PATCH] Make DB migrations --- helmchart/single-sign-on/values.yaml | 20 +++++++------ .../{207081778bb2_.py => 4cdc1d4ed8d1_.py} | 27 +++++++++-------- login/migrations/versions/9817fa267190_.py | 28 ----------------- login/migrations/versions/ca13699053b3_.py | 30 ------------------- login/models.py | 15 ++++------ 5 files changed, 32 insertions(+), 88 deletions(-) rename login/migrations/versions/{207081778bb2_.py => 4cdc1d4ed8d1_.py} (64%) delete mode 100644 login/migrations/versions/9817fa267190_.py delete mode 100644 login/migrations/versions/ca13699053b3_.py diff --git a/helmchart/single-sign-on/values.yaml b/helmchart/single-sign-on/values.yaml index 1d2b6a0..c308962 100644 --- a/helmchart/single-sign-on/values.yaml +++ b/helmchart/single-sign-on/values.yaml @@ -91,9 +91,19 @@ kratos: tag: v0.7.3-alpha.1 kratos: - # TODO: This schema is not complete yet. This schema is + # TODO: This schema is not complete yet. This schema is # put on the config disk as a seperate file by the # helm chart + # + # Email verification for now disabled. This need to be changed + # eventually. However, first the basic flow and sending out + # email notifications need to be fixed. + # This should be under "org.sh/kratos" in above schema + # + # "verification": { + # "via": "email" + # }, + identitySchemas: "identity.default.schema.json": | { @@ -136,14 +146,6 @@ kratos: } -# TODO: Email verification for now disabled. This need to be changed -# eventually. However, first the basic flow and sending out -# email notifications need to be fixed. -# This should be under "org.sh/kratos" in above schema -# -# "verification": { -# "via": "email" -# }, # We included our own (forked) template to handle this job autoMigrate: false diff --git a/login/migrations/versions/207081778bb2_.py b/login/migrations/versions/4cdc1d4ed8d1_.py similarity index 64% rename from login/migrations/versions/207081778bb2_.py rename to login/migrations/versions/4cdc1d4ed8d1_.py index b9e3c65..bfd4def 100644 --- a/login/migrations/versions/207081778bb2_.py +++ b/login/migrations/versions/4cdc1d4ed8d1_.py @@ -1,8 +1,8 @@ """empty message -Revision ID: 207081778bb2 +Revision ID: 4cdc1d4ed8d1 Revises: -Create Date: 2021-11-16 08:18:27.697307 +Create Date: 2021-11-18 11:46:33.222668 """ from alembic import op @@ -10,7 +10,7 @@ import sqlalchemy as sa # revision identifiers, used by Alembic. -revision = '207081778bb2' +revision = '4cdc1d4ed8d1' down_revision = None branch_labels = None depends_on = None @@ -18,25 +18,28 @@ depends_on = None def upgrade(): # ### commands auto generated by Alembic - please adjust! ### - op.create_table('apps', + op.create_table('app', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(), nullable=True), sa.Column('slug', sa.String(), nullable=True), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('slug') ) - op.create_table('users', + op.create_table('user', sa.Column('id', sa.Integer(), nullable=False), sa.Column('email', sa.String(), nullable=True), + sa.Column('kratos_id', sa.String(), nullable=True), + sa.Column('admin', sa.Boolean(), nullable=True), sa.PrimaryKeyConstraint('id'), - sa.UniqueConstraint('email') + sa.UniqueConstraint('email'), + sa.UniqueConstraint('kratos_id') ) - op.create_table('user_app_roles', + op.create_table('app_role', sa.Column('user_id', sa.Integer(), nullable=False), sa.Column('app_id', sa.Integer(), nullable=False), sa.Column('role', sa.String(), nullable=True), - sa.ForeignKeyConstraint(['app_id'], ['apps.id'], ), - sa.ForeignKeyConstraint(['user_id'], ['users.id'], ), + sa.ForeignKeyConstraint(['app_id'], ['app.id'], ), + sa.ForeignKeyConstraint(['user_id'], ['user.id'], ), sa.PrimaryKeyConstraint('user_id', 'app_id') ) # ### end Alembic commands ### @@ -44,7 +47,7 @@ def upgrade(): def downgrade(): # ### commands auto generated by Alembic - please adjust! ### - op.drop_table('user_app_roles') - op.drop_table('users') - op.drop_table('apps') + op.drop_table('app_role') + op.drop_table('user') + op.drop_table('app') # ### end Alembic commands ### diff --git a/login/migrations/versions/9817fa267190_.py b/login/migrations/versions/9817fa267190_.py deleted file mode 100644 index 821b442..0000000 --- a/login/migrations/versions/9817fa267190_.py +++ /dev/null @@ -1,28 +0,0 @@ -"""empty message - -Revision ID: 9817fa267190 -Revises: 207081778bb2 -Create Date: 2021-11-16 08:41:26.106815 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '9817fa267190' -down_revision = '207081778bb2' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('users', sa.Column('admin', sa.Boolean(), nullable=True)) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_column('users', 'admin') - # ### end Alembic commands ### diff --git a/login/migrations/versions/ca13699053b3_.py b/login/migrations/versions/ca13699053b3_.py deleted file mode 100644 index deb1b34..0000000 --- a/login/migrations/versions/ca13699053b3_.py +++ /dev/null @@ -1,30 +0,0 @@ -"""empty message - -Revision ID: ca13699053b3 -Revises: 9817fa267190 -Create Date: 2021-11-16 10:34:23.890576 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'ca13699053b3' -down_revision = '9817fa267190' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('users', sa.Column('kratos_id', sa.String(), nullable=True)) - op.create_unique_constraint(None, 'users', ['kratos_id']) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_constraint(None, 'users', type_='unique') - op.drop_column('users', 'kratos_id') - # ### end Alembic commands ### diff --git a/login/models.py b/login/models.py index c4caa00..a14b6b6 100644 --- a/login/models.py +++ b/login/models.py @@ -8,14 +8,13 @@ from sqlalchemy import Column, Integer, String, ForeignKey, Boolean # User model class User(db.Model): - __tablename__ = 'users' id = db.Column(Integer, primary_key=True) email = db.Column(String, unique=True) kratos_id = db.Column(String, unique=True) admin = db.Column(Boolean, default=False) - app_roles = relationship('AppRole', back_populates="user") +# app_roles = relationship('AppRole', back_populates="users") def __repr__(self): return f"{self.id} <{self.email}>" @@ -23,7 +22,6 @@ class User(db.Model): # App model class App(db.Model): - __tablename__ = 'apps' id = db.Column(Integer, primary_key=True) name = db.Column(String()) @@ -35,14 +33,13 @@ class App(db.Model): # App role class AppRole(db.Model): - __tablename__ = 'user_app_roles' - user_id = db.Column(Integer, ForeignKey('users.id'), primary_key=True) - user = relationship("User", back_populates="app_roles") - - app_id = db.Column(Integer, ForeignKey('apps.id'), + user_id = db.Column(Integer, ForeignKey('user.id'), primary_key=True) + app_id = db.Column(Integer, ForeignKey('app.id'), primary_key=True) - app = relationship("App") + +# user = relationship("User", back_populates="approle") +# app = relationship("App") role = db.Column(String) -- GitLab