feat: add Column to reports model (#15683)

* migration

* added index, fixed misspelling

* Fix benchmark script

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
This commit is contained in:
AAfghahi
2021-07-15 16:38:57 -04:00
committed by GitHub
parent e305f2a5f3
commit 7dd3af6dda
2 changed files with 54 additions and 3 deletions

View File

@@ -0,0 +1,48 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
"""add_creation_method_to_reports_model
Revision ID: 3317e9248280
Revises: 453530256cea
Create Date: 2021-07-14 10:31:38.610095
"""
# revision identifiers, used by Alembic.
revision = "3317e9248280"
down_revision = "453530256cea"
import sqlalchemy as sa
from alembic import op
def upgrade():
with op.batch_alter_table("report_schedule") as batch_op:
batch_op.add_column(
sa.Column(
"creation_method", sa.VARCHAR(255), server_default="alert_reports",
)
)
batch_op.create_index(
op.f("ix_creation_method"), ["creation_method"], unique=False
)
def downgrade():
with op.batch_alter_table("report_schedule") as batch_op:
batch_op.drop_index("ix_creation_method")
batch_op.drop_column("creation_method")

View File

@@ -69,6 +69,9 @@ days_range = (MAXIMUM_DATE - MINIMUM_DATE).days
# pylint: disable=too-many-return-statements, too-many-branches
def get_type_generator(sqltype: sqlalchemy.sql.sqltypes) -> Callable[[], Any]:
if isinstance(sqltype, sqlalchemy.dialects.mysql.types.TINYINT):
return lambda: random.choice([0, 1])
if isinstance(
sqltype, (sqlalchemy.sql.sqltypes.INTEGER, sqlalchemy.sql.sqltypes.Integer)
):
@@ -83,7 +86,7 @@ def get_type_generator(sqltype: sqlalchemy.sql.sqltypes) -> Callable[[], Any]:
length = random.randrange(sqltype.length or 255)
length = max(8, length) # for unique values
length = min(100, length) # for FAB perms
return lambda: "".join(random.choices(string.printable, k=length))
return lambda: "".join(random.choices(string.ascii_letters, k=length))
if isinstance(
sqltype, (sqlalchemy.sql.sqltypes.TEXT, sqlalchemy.sql.sqltypes.Text)
@@ -91,7 +94,7 @@ def get_type_generator(sqltype: sqlalchemy.sql.sqltypes) -> Callable[[], Any]:
length = random.randrange(65535)
# "practicality beats purity"
length = max(length, 2048)
return lambda: "".join(random.choices(string.printable, k=length))
return lambda: "".join(random.choices(string.ascii_letters, k=length))
if isinstance(
sqltype, (sqlalchemy.sql.sqltypes.BOOLEAN, sqlalchemy.sql.sqltypes.Boolean)
@@ -130,7 +133,7 @@ def get_type_generator(sqltype: sqlalchemy.sql.sqltypes) -> Callable[[], Any]:
if isinstance(sqltype, sqlalchemy.sql.sqltypes.JSON):
return lambda: {
"".join(random.choices(string.printable, k=8)): random.randrange(65535)
"".join(random.choices(string.ascii_letters, k=8)): random.randrange(65535)
for _ in range(10)
}