From 980942a1f9a89e80458a661bae585b01577042cb Mon Sep 17 00:00:00 2001 From: Son NK <> Date: Mon, 25 Jan 2021 18:47:02 +0100 Subject: [PATCH] create Metric model --- app/models.py | 33 +++++++++++++++++ .../versions/2021_012518_2779eb90c6c4_.py | 37 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 migrations/versions/2021_012518_2779eb90c6c4_.py diff --git a/app/models.py b/app/models.py index 606bb535..84bd3a92 100644 --- a/app/models.py +++ b/app/models.py @@ -2078,3 +2078,36 @@ class AuthorizedAddress(db.Model, ModelMixin): def __repr__(self): return f"" + + +class Metric(db.Model, ModelMixin): + """For storing different metrics like number of users, etc""" + + date = db.Column(ArrowType, default=arrow.utcnow, nullable=False) + name = db.Column(db.String(256), nullable=False) + value = db.Column(db.Float, nullable=False) + + NB_USER = "nb_user" + NB_ACTIVATED_USER = "nb_activated_user" + + NB_PREMIUM = "nb_premium" + NB_APPLE_PREMIUM = "nb_apple_premium" + NB_CANCELLED_PREMIUM = "nb_cancelled_premium" + NB_MANUAL_PREMIUM = "nb_manual_premium" + NB_COINBASE_PREMIUM = "nb_coinbase_premium" + + # nb users who have been referred + NB_REFERRED_USER = "nb_referred_user" + NB_REFERRED_USER_PAID = "nb_referred_user_paid" + + NB_ALIAS = "nb_alias" + + NB_FORWARD = "nb_forward" + NB_BLOCK = "nb_block" + NB_REPLY = "nb_reply" + NB_BOUNCED = "nb_bounced" + NB_SPAM = "nb_spam" + + NB_VERIFIED_CUSTOM_DOMAIN = "nb_verified_custom_domain" + + NB_APP = "nb_app" diff --git a/migrations/versions/2021_012518_2779eb90c6c4_.py b/migrations/versions/2021_012518_2779eb90c6c4_.py new file mode 100644 index 00000000..4d8e82ac --- /dev/null +++ b/migrations/versions/2021_012518_2779eb90c6c4_.py @@ -0,0 +1,37 @@ +"""empty message + +Revision ID: 2779eb90c6c4 +Revises: 1b54995bc086 +Create Date: 2021-01-25 18:45:29.910152 + +""" +import sqlalchemy_utils +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '2779eb90c6c4' +down_revision = '1b54995bc086' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('metric', + sa.Column('id', sa.Integer(), autoincrement=True, nullable=False), + sa.Column('created_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False), + sa.Column('updated_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True), + sa.Column('date', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False), + sa.Column('name', sa.String(length=256), nullable=False), + sa.Column('value', sa.Float(), nullable=False), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('metric') + # ### end Alembic commands ###