mirror of
				https://github.com/StefBuwalda/dashboard_test.git
				synced 2025-10-30 03:09:59 +00:00 
			
		
		
		
	MAJOR REFACTOR P3
This commit is contained in:
		
							
								
								
									
										1
									
								
								app/migrations/README
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								app/migrations/README
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| Single-database configuration for Flask. | ||||
							
								
								
									
										50
									
								
								app/migrations/alembic.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								app/migrations/alembic.ini
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| # A generic, single database configuration. | ||||
|  | ||||
| [alembic] | ||||
| # template used to generate migration files | ||||
| # file_template = %%(rev)s_%%(slug)s | ||||
|  | ||||
| # set to 'true' to run the environment during | ||||
| # the 'revision' command, regardless of autogenerate | ||||
| # revision_environment = false | ||||
|  | ||||
|  | ||||
| # Logging configuration | ||||
| [loggers] | ||||
| keys = root,sqlalchemy,alembic,flask_migrate | ||||
|  | ||||
| [handlers] | ||||
| keys = console | ||||
|  | ||||
| [formatters] | ||||
| keys = generic | ||||
|  | ||||
| [logger_root] | ||||
| level = WARN | ||||
| handlers = console | ||||
| qualname = | ||||
|  | ||||
| [logger_sqlalchemy] | ||||
| level = WARN | ||||
| handlers = | ||||
| qualname = sqlalchemy.engine | ||||
|  | ||||
| [logger_alembic] | ||||
| level = INFO | ||||
| handlers = | ||||
| qualname = alembic | ||||
|  | ||||
| [logger_flask_migrate] | ||||
| level = INFO | ||||
| handlers = | ||||
| qualname = flask_migrate | ||||
|  | ||||
| [handler_console] | ||||
| class = StreamHandler | ||||
| args = (sys.stderr,) | ||||
| level = NOTSET | ||||
| formatter = generic | ||||
|  | ||||
| [formatter_generic] | ||||
| format = %(levelname)-5.5s [%(name)s] %(message)s | ||||
| datefmt = %H:%M:%S | ||||
							
								
								
									
										113
									
								
								app/migrations/env.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								app/migrations/env.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,113 @@ | ||||
| import logging | ||||
| from logging.config import fileConfig | ||||
|  | ||||
| from flask import current_app | ||||
|  | ||||
| from alembic import context | ||||
|  | ||||
| # this is the Alembic Config object, which provides | ||||
| # access to the values within the .ini file in use. | ||||
| config = context.config | ||||
|  | ||||
| # Interpret the config file for Python logging. | ||||
| # This line sets up loggers basically. | ||||
| fileConfig(config.config_file_name) | ||||
| logger = logging.getLogger('alembic.env') | ||||
|  | ||||
|  | ||||
| def get_engine(): | ||||
|     try: | ||||
|         # this works with Flask-SQLAlchemy<3 and Alchemical | ||||
|         return current_app.extensions['migrate'].db.get_engine() | ||||
|     except (TypeError, AttributeError): | ||||
|         # this works with Flask-SQLAlchemy>=3 | ||||
|         return current_app.extensions['migrate'].db.engine | ||||
|  | ||||
|  | ||||
| def get_engine_url(): | ||||
|     try: | ||||
|         return get_engine().url.render_as_string(hide_password=False).replace( | ||||
|             '%', '%%') | ||||
|     except AttributeError: | ||||
|         return str(get_engine().url).replace('%', '%%') | ||||
|  | ||||
|  | ||||
| # add your model's MetaData object here | ||||
| # for 'autogenerate' support | ||||
| # from myapp import mymodel | ||||
| # target_metadata = mymodel.Base.metadata | ||||
| config.set_main_option('sqlalchemy.url', get_engine_url()) | ||||
| target_db = current_app.extensions['migrate'].db | ||||
|  | ||||
| # other values from the config, defined by the needs of env.py, | ||||
| # can be acquired: | ||||
| # my_important_option = config.get_main_option("my_important_option") | ||||
| # ... etc. | ||||
|  | ||||
|  | ||||
| def get_metadata(): | ||||
|     if hasattr(target_db, 'metadatas'): | ||||
|         return target_db.metadatas[None] | ||||
|     return target_db.metadata | ||||
|  | ||||
|  | ||||
| def run_migrations_offline(): | ||||
|     """Run migrations in 'offline' mode. | ||||
|  | ||||
|     This configures the context with just a URL | ||||
|     and not an Engine, though an Engine is acceptable | ||||
|     here as well.  By skipping the Engine creation | ||||
|     we don't even need a DBAPI to be available. | ||||
|  | ||||
|     Calls to context.execute() here emit the given string to the | ||||
|     script output. | ||||
|  | ||||
|     """ | ||||
|     url = config.get_main_option("sqlalchemy.url") | ||||
|     context.configure( | ||||
|         url=url, target_metadata=get_metadata(), literal_binds=True | ||||
|     ) | ||||
|  | ||||
|     with context.begin_transaction(): | ||||
|         context.run_migrations() | ||||
|  | ||||
|  | ||||
| def run_migrations_online(): | ||||
|     """Run migrations in 'online' mode. | ||||
|  | ||||
|     In this scenario we need to create an Engine | ||||
|     and associate a connection with the context. | ||||
|  | ||||
|     """ | ||||
|  | ||||
|     # this callback is used to prevent an auto-migration from being generated | ||||
|     # when there are no changes to the schema | ||||
|     # reference: http://alembic.zzzcomputing.com/en/latest/cookbook.html | ||||
|     def process_revision_directives(context, revision, directives): | ||||
|         if getattr(config.cmd_opts, 'autogenerate', False): | ||||
|             script = directives[0] | ||||
|             if script.upgrade_ops.is_empty(): | ||||
|                 directives[:] = [] | ||||
|                 logger.info('No changes in schema detected.') | ||||
|  | ||||
|     conf_args = current_app.extensions['migrate'].configure_args | ||||
|     if conf_args.get("process_revision_directives") is None: | ||||
|         conf_args["process_revision_directives"] = process_revision_directives | ||||
|  | ||||
|     connectable = get_engine() | ||||
|  | ||||
|     with connectable.connect() as connection: | ||||
|         context.configure( | ||||
|             connection=connection, | ||||
|             target_metadata=get_metadata(), | ||||
|             **conf_args | ||||
|         ) | ||||
|  | ||||
|         with context.begin_transaction(): | ||||
|             context.run_migrations() | ||||
|  | ||||
|  | ||||
| if context.is_offline_mode(): | ||||
|     run_migrations_offline() | ||||
| else: | ||||
|     run_migrations_online() | ||||
							
								
								
									
										24
									
								
								app/migrations/script.py.mako
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								app/migrations/script.py.mako
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| """${message} | ||||
|  | ||||
| Revision ID: ${up_revision} | ||||
| Revises: ${down_revision | comma,n} | ||||
| Create Date: ${create_date} | ||||
|  | ||||
| """ | ||||
| from alembic import op | ||||
| import sqlalchemy as sa | ||||
| ${imports if imports else ""} | ||||
|  | ||||
| # revision identifiers, used by Alembic. | ||||
| revision = ${repr(up_revision)} | ||||
| down_revision = ${repr(down_revision)} | ||||
| branch_labels = ${repr(branch_labels)} | ||||
| depends_on = ${repr(depends_on)} | ||||
|  | ||||
|  | ||||
| def upgrade(): | ||||
|     ${upgrades if upgrades else "pass"} | ||||
|  | ||||
|  | ||||
| def downgrade(): | ||||
|     ${downgrades if downgrades else "pass"} | ||||
							
								
								
									
										37
									
								
								app/migrations/versions/3c05315d5b9b_.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								app/migrations/versions/3c05315d5b9b_.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | ||||
| """empty message | ||||
|  | ||||
| Revision ID: 3c05315d5b9b | ||||
| Revises: f87909a4293b | ||||
| Create Date: 2025-09-05 09:48:08.561045 | ||||
|  | ||||
| """ | ||||
|  | ||||
| from alembic import op | ||||
| import sqlalchemy as sa | ||||
|  | ||||
|  | ||||
| # revision identifiers, used by Alembic. | ||||
| revision = "3c05315d5b9b" | ||||
| down_revision = "f87909a4293b" | ||||
| branch_labels = None | ||||
| depends_on = None | ||||
|  | ||||
|  | ||||
| def upgrade(): | ||||
|     # ### commands auto generated by Alembic - please adjust! ### | ||||
|     with op.batch_alter_table("log", schema=None) as batch_op: | ||||
|         batch_op.add_column( | ||||
|             sa.Column( | ||||
|                 "timeout", sa.Boolean(), nullable=False, server_default="false" | ||||
|             ) | ||||
|         ) | ||||
|  | ||||
|     # ### end Alembic commands ### | ||||
|  | ||||
|  | ||||
| def downgrade(): | ||||
|     # ### commands auto generated by Alembic - please adjust! ### | ||||
|     with op.batch_alter_table("log", schema=None) as batch_op: | ||||
|         batch_op.drop_column("timeout") | ||||
|  | ||||
|     # ### end Alembic commands ### | ||||
							
								
								
									
										32
									
								
								app/migrations/versions/d7d380435347_.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								app/migrations/versions/d7d380435347_.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| """empty message | ||||
|  | ||||
| Revision ID: d7d380435347 | ||||
| Revises:  | ||||
| Create Date: 2025-09-02 08:43:16.682424 | ||||
|  | ||||
| """ | ||||
| from alembic import op | ||||
| import sqlalchemy as sa | ||||
|  | ||||
|  | ||||
| # revision identifiers, used by Alembic. | ||||
| revision = 'd7d380435347' | ||||
| down_revision = None | ||||
| branch_labels = None | ||||
| depends_on = None | ||||
|  | ||||
|  | ||||
| def upgrade(): | ||||
|     # ### commands auto generated by Alembic - please adjust! ### | ||||
|     op.create_table('log', | ||||
|     sa.Column('id', sa.Integer(), nullable=False), | ||||
|     sa.Column('dateCreated', sa.DateTime(), nullable=False), | ||||
|     sa.PrimaryKeyConstraint('id') | ||||
|     ) | ||||
|     # ### end Alembic commands ### | ||||
|  | ||||
|  | ||||
| def downgrade(): | ||||
|     # ### commands auto generated by Alembic - please adjust! ### | ||||
|     op.drop_table('log') | ||||
|     # ### end Alembic commands ### | ||||
							
								
								
									
										35
									
								
								app/migrations/versions/f04407e8e466_.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								app/migrations/versions/f04407e8e466_.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | ||||
| """empty message | ||||
|  | ||||
| Revision ID: f04407e8e466 | ||||
| Revises: d7d380435347 | ||||
| Create Date: 2025-09-03 15:40:30.413166 | ||||
|  | ||||
| """ | ||||
| from alembic import op | ||||
| import sqlalchemy as sa | ||||
|  | ||||
|  | ||||
| # revision identifiers, used by Alembic. | ||||
| revision = 'f04407e8e466' | ||||
| down_revision = 'd7d380435347' | ||||
| branch_labels = None | ||||
| depends_on = None | ||||
|  | ||||
|  | ||||
| def upgrade(): | ||||
|     # ### commands auto generated by Alembic - please adjust! ### | ||||
|     op.create_table('service', | ||||
|     sa.Column('id', sa.Integer(), nullable=False), | ||||
|     sa.Column('url', sa.String(), nullable=False), | ||||
|     sa.Column('label', sa.String(length=15), nullable=False), | ||||
|     sa.Column('public_access', sa.Boolean(), nullable=False), | ||||
|     sa.Column('ping_method', sa.Integer(), nullable=False), | ||||
|     sa.PrimaryKeyConstraint('id') | ||||
|     ) | ||||
|     # ### end Alembic commands ### | ||||
|  | ||||
|  | ||||
| def downgrade(): | ||||
|     # ### commands auto generated by Alembic - please adjust! ### | ||||
|     op.drop_table('service') | ||||
|     # ### end Alembic commands ### | ||||
							
								
								
									
										50
									
								
								app/migrations/versions/f87909a4293b_.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								app/migrations/versions/f87909a4293b_.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| """empty message | ||||
|  | ||||
| Revision ID: f87909a4293b | ||||
| Revises: f04407e8e466 | ||||
| Create Date: 2025-09-03 16:36:14.608372 | ||||
|  | ||||
| """ | ||||
|  | ||||
| from alembic import op | ||||
| import sqlalchemy as sa | ||||
|  | ||||
|  | ||||
| # revision identifiers, used by Alembic. | ||||
| revision = "f87909a4293b" | ||||
| down_revision = "f04407e8e466" | ||||
| branch_labels = None | ||||
| depends_on = None | ||||
|  | ||||
|  | ||||
| def upgrade(): | ||||
|     # ### commands auto generated by Alembic - please adjust! ### | ||||
|     op.execute("DROP TABLE IF EXISTS _alembic_tmp_log") | ||||
|     op.execute("DELETE FROM log") | ||||
|  | ||||
|     with op.batch_alter_table("log", schema=None) as batch_op: | ||||
|         batch_op.add_column( | ||||
|             sa.Column( | ||||
|                 "service_id", sa.Integer(), nullable=False, server_default="0" | ||||
|             ) | ||||
|         ) | ||||
|         batch_op.add_column(sa.Column("ping", sa.Integer(), nullable=True)) | ||||
|         batch_op.create_index( | ||||
|             batch_op.f("ix_log_dateCreated"), ["dateCreated"], unique=False | ||||
|         ) | ||||
|         batch_op.create_foreign_key( | ||||
|             "fk_log2service", "service", ["service_id"], ["id"] | ||||
|         ) | ||||
|  | ||||
|     # ### end Alembic commands ### | ||||
|  | ||||
|  | ||||
| def downgrade(): | ||||
|     # ### commands auto generated by Alembic - please adjust! ### | ||||
|     with op.batch_alter_table("log", schema=None) as batch_op: | ||||
|         batch_op.drop_constraint("fk_log2service", type_="foreignkey") | ||||
|         batch_op.drop_index(batch_op.f("ix_log_dateCreated")) | ||||
|         batch_op.drop_column("ping") | ||||
|         batch_op.drop_column("service_id") | ||||
|  | ||||
|     # ### end Alembic commands ### | ||||
		Reference in New Issue
	
	Block a user