create Metric model

This commit is contained in:
Son NK 2021-01-25 18:47:02 +01:00
parent 0de5b5a9bf
commit 980942a1f9
2 changed files with 70 additions and 0 deletions

View File

@ -2078,3 +2078,36 @@ class AuthorizedAddress(db.Model, ModelMixin):
def __repr__(self):
return f"<AuthorizedAddress {self.id} {self.email} {self.mailbox_id}>"
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"

View File

@ -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 ###