mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-04 18:31:13 -05:00
Add billing models and small alteration to billing tables
This commit is contained in:
@@ -11,7 +11,7 @@ from sqlalchemy.dialects.postgresql import (
|
||||
UUID,
|
||||
JSON
|
||||
)
|
||||
from sqlalchemy import UniqueConstraint, CheckConstraint
|
||||
from sqlalchemy import UniqueConstraint, CheckConstraint, Index
|
||||
from notifications_utils.columns import Columns
|
||||
from notifications_utils.recipients import (
|
||||
validate_email_address,
|
||||
@@ -1725,3 +1725,44 @@ class DailySortedLetter(db.Model):
|
||||
unsorted_count = db.Column(db.Integer, nullable=False, default=0)
|
||||
sorted_count = db.Column(db.Integer, nullable=False, default=0)
|
||||
updated_at = db.Column(db.DateTime, nullable=True, onupdate=datetime.datetime.utcnow)
|
||||
|
||||
|
||||
class FactBilling(db.Model):
|
||||
__tablename__ = "ft_billing"
|
||||
|
||||
bst_date = db.Column(db.Date, nullable=False, primary_key=True, index=True)
|
||||
template_id = db.Column(UUID(as_uuid=True), nullable=True, primary_key=True, index=True)
|
||||
service_id = db.Column(UUID(as_uuid=True), nullable=True, index=True)
|
||||
organisation_id = db.Column(UUID(as_uuid=True), nullable=True)
|
||||
annual_billing_id = db.Column(UUID(as_uuid=True), nullable=True)
|
||||
notification_type = db.Column(db.Text, nullable=True)
|
||||
provider = db.Column(db.Text, nullable=True)
|
||||
crown = db.Column(db.Text, nullable=True)
|
||||
rate_multiplier = db.Column(db.Numeric(), nullable=True)
|
||||
international = db.Column(db.Boolean, nullable=True)
|
||||
rate = db.Column(db.Numeric(), nullable=True)
|
||||
billable_units = db.Column(db.Numeric(), nullable=True)
|
||||
notifications_sent = db.Column(db.Integer(), nullable=True)
|
||||
|
||||
|
||||
class DateTimeDimension(db.Model):
|
||||
__tablename__ = "dm_datetime"
|
||||
bst_date = db.Column(db.Date, nullable=False, primary_key=True, index=True)
|
||||
year = db.Column(db.Integer(), nullable=False)
|
||||
month = db.Column(db.Integer(), nullable=False)
|
||||
month_name = db.Column(db.Text(), nullable=False)
|
||||
day = db.Column(db.Integer(), nullable=False)
|
||||
bst_day = db.Column(db.Integer(), nullable=False)
|
||||
day_of_year = db.Column(db.Integer(), nullable=False)
|
||||
week_day_name = db.Column(db.Text(), nullable=False)
|
||||
calendar_week = db.Column(db.Integer(), nullable=False)
|
||||
quartal = db.Column(db.Text(), nullable=False)
|
||||
year_quartal = db.Column(db.Text(), nullable=False)
|
||||
year_month = db.Column(db.Text(), nullable=False)
|
||||
year_calendar_week = db.Column(db.Text(), nullable=False)
|
||||
financial_year = db.Column(db.Integer(), nullable=False)
|
||||
utc_daytime_start = db.Column(db.DateTime, nullable=False)
|
||||
utc_daytime_end = db.Column(db.DateTime, nullable=False)
|
||||
|
||||
|
||||
Index('ix_dm_datetime_yearmonth', DateTimeDimension.year, DateTimeDimension.month)
|
||||
|
||||
24
migrations/versions/0176_alter_billing_columns.py
Normal file
24
migrations/versions/0176_alter_billing_columns.py
Normal file
@@ -0,0 +1,24 @@
|
||||
"""
|
||||
|
||||
Revision ID: 0176_alter_billing_columns
|
||||
Revises: 0175_drop_job_statistics_table
|
||||
Create Date: 2018-03-12 16:54:30.663897
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
revision = '0176_alter_billing_columns'
|
||||
down_revision = '0175_drop_job_statistics_table'
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.alter_column('dm_datetime', 'calendar_week', existing_type=sa.INTEGER(), nullable=False)
|
||||
op.alter_column('dm_datetime', 'day', existing_type=sa.INTEGER(), nullable=False)
|
||||
op.alter_column('dm_datetime', 'financial_year', existing_type=sa.INTEGER(), nullable=False)
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.alter_column('dm_datetime', 'financial_year', existing_type=sa.INTEGER(), nullable=True)
|
||||
op.alter_column('dm_datetime', 'day', existing_type=sa.INTEGER(), nullable=True)
|
||||
op.alter_column('dm_datetime', 'calendar_week', existing_type=sa.INTEGER(), nullable=True)
|
||||
Reference in New Issue
Block a user