Subversion Repositories SmartDukaan

Rev

Rev 19777 | Blame | Compare with Previous | Last modification | View Log | RSS feed

from sqlalchemy import create_engine
from elixir import *
from elixir.entity import Entity
from elixir.fields import Field
from elixir.options import using_options, using_table_options
from sqlalchemy.sql.expression import func
from sqlalchemy.types import Integer, String, DateTime, Float, Boolean, Enum, \
    Text, Date
from sqlalchemy.dialects.mysql.base import LONGTEXT

CASHBACK_AMOUNT = 'CASHBACK_AMOUNT'
CASHBACK_PERCENTAGE = 'CASHBACK_PERCENTAGE'
class Users(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    username = Field(String(128))
    email = Field(String(128))
    password = Field(String(64))
    first_name = Field(String(64))
    last_name = Field(String(64))
    mobile_number = Field(String(15))
    referral_url = Field(String(256))
    referrer = Field(String(32))
    password_reset = Field(String(64))
    activation_code = Field(String(40))
    address_line_1 = Field(String(128))                    
    address_line_2 = Field(String(128))                    
    city = Field(String(128))                    
    state = Field(String(64))                    
    pincode = Field(String(6))
    activated = Field(Boolean)
    group_id = Field(Integer(unsigned=True), default=1)
    status = Field(Integer, default=1)
    utm_campaign = Field(String(128))
    activation_time = Field(DateTime)
    created = Field(DateTime)
    modified = Field(DateTime)
    usergroup_id = Field(Text)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class user_actions(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    user_id = Field(Integer(unsigned=True))
    store_product_id = Field(Integer(unsigned=True))
    action = Field(Enum('like','dislike'))
    created = Field(DateTime, default=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class OnboardedRetailerChecklists(Entity):    
    id = Field(Integer(unsigned=True), primary_key=True)
    retailer_id = Field(Integer(unsigned=True))
    number_verification = Field(Boolean)
    preferences = Field(Boolean)
    doa_return_policy = Field(Boolean)
    payment_option = Field(Boolean)
    contact_us = Field(Boolean)
    product_info = Field(Boolean)
    redeem = Field(Boolean)
    created = Field(DateTime,default=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class brand_preferences(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    user_id = Field(Integer(unsigned=True))
    category_id = Field(Integer(unsigned=True))
    brand = Field(String(128))
    status = Field(Enum('show','hide'),default='hide', server_default='hide')
    created = Field(DateTime)
    modified = Field(DateTime)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class price_preferences(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    user_id = Field(Integer(unsigned=True))
    category_id = Field(Integer(unsigned=True))
    min_price = Field(Float, default=0.0, server_default="0.0")
    max_price = Field(Float, default=0.0, server_default="0.0")
    created = Field(DateTime)
    modified = Field(DateTime)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class Brands(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    name = Field(String(128))
    category_id = Field(Integer)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class Feedbacks(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    user_id = Field(Integer(unsigned=True))
    email = Field(String(128))
    subject = Field(String(256))
    message = Field(Text)
    created = Field(DateTime)
    isTicketCreated = Field(Boolean, default=False, server_default='0')
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class Order_Parse_Info(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    user_id = Field(Integer(unsigned=True))
    order_id = Field(Integer(unsigned=True))
    address = Field(String(256))
    email = Field(String(128))
    name = Field(String(128))
    mobile = Field(String(12))
    city = Field(String(128))
    state = Field(String(128))
    pin = Field(String(8))
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class Postoffices(Entity):
    id = Field(Integer(10, unsigned=True), primary_key=True)
    name = Field(String(128))
    pincode = Field(Integer(6, unsigned=True))
    deliverystatus = Field(Boolean)
    divisionname = Field(String(128))
    regionname = Field(String(128))
    taluk = Field(String(128))
    district = Field(String(128))
    state = Field(String(128))
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class Orders(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    user_id = Field(Integer(unsigned=True), primary_key=True)
    store_id = Field(Integer(unsigned=True), primary_key=True)
    order_url = Field(String(256))
    status = Field(String(32))
    created = Field(DateTime)
    modified = Field(DateTime)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class FlipkartOrders(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    user_id = Field(Integer(unsigned=True))
    email = Field(String(128))
    subtagId= Field(String(32))
    identifier = Field(String(32))
    catalogId = Field(Integer)
    title = Field(String(512))
    brand = Field(String(64))
    model = Field(String(64))
    status = Field(String(16))
    price = Field(Float)
    category = Field(String(16))
    quantity = Field(SmallInteger)
    created = Field(DateTime)
    payOut = Field(Integer)
    payOutPercentage = Field(SmallInteger)
    affiliateOrderItemId = Field(String(20))
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class OrdersRaw(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    user_id = Field(Integer(unsigned=True), primary_key=True)
    store_id = Field(Integer(unsigned=True), primary_key=True)
    order_url = Field(String(256))
    sub_tag = Field(String(32))
    rawhtml = Field(LONGTEXT)
    status = Field(String(32))
    created = Field(DateTime)
    modified = Field(DateTime)
    using_options(tablename="orders")
    using_table_options(useexisting=True,mysql_engine="InnoDB")

class Retailers(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    identifier = Field(String(128))
    title = Field(String(256))
    address = Field(String(512))
    address_new = Field(String(512))
    agent_id=Field(Integer(unsigned=True))
    contact1 = Field(String(10))
    contact2 = Field(String(10))
    pin = Field(String(6))
    cod_limit = Field(Integer(10))
    city = Field(String(64))
    state = Field(String(48))
    status = Field(String(20))
    is_elavated = Field(Boolean)
    retry_count = Field(Integer(3))
    invalid_retry_count = Field(Integer(3))
    call_priority = Field(Enum('user_initiated', 'system_initiated'))
    next_call_time = Field(DateTime)
    is_std = Field(Boolean)
    is_or = Field(Boolean)
    created = Field(DateTime, default=func.now())
    disposition = Field(String(32))
    isvalidated = Field(Boolean)
    tinnumber = Field(String(11))
    source = Field(Enum('justdial', 'inbound','outbound'))
    comments = Field(String(256))
    modified = Field(DateTime, default=func.now(), onupdate=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class RetailerAddresses(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    retailer_id = Field(Integer(unsigned=True))
    title = Field(String(128))
    agent_id=Field(Integer(unsigned=True))
    address = Field(String(512))
    city = Field(String(64))
    state = Field(String(48))
    pin = Field(String(6))
    created = Field(DateTime,default=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
class DailySourcewiseOrderInfo(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    source = Field(Integer(2))
    order_count = Field(Integer(4))
    quantity_count = Field(Integer(4))
    sale_amount = Field(Integer(10))
    created = Field(DateTime)
    modified = Field(DateTime, default=func.now(), onupdate=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class AlreadyCalledNumbers(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    mobile_number = Field(String(10), unique=True)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class Pincodeavailability(Entity):
    code = Field(String(6), unique=True)
    amount = Field(Integer(11))
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class RetailerContacts(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    retailer_id = Field(Integer(unsigned=True))
    agent_id = Field(Integer(unsigned=True))
    mobile_number = Field(String(10))
    contact_type = Field(Enum('sms', 'called', 'ringing'))
    call_type = Field(String(10))
    created = Field(DateTime,default=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    

class CallHistory(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    retailer_id = Field(Integer(unsigned=True))
    agent_id = Field(Integer(unsigned=True))
    mobile_number = Field(String(10))
    call_type = Field(String(10))
    sms_verified = Field(Boolean)
    call_time = Field(DateTime)
    duration_sec = Field(Integer)
    last_fetch_time = Field(DateTime) 
    call_disposition = Field(Enum('call_later','ringing_no_answer', 'not_reachable', 'switch_off', 'invalid_no', 'wrong_no', 'hang_up','retailer_not_interested', 'alreadyuser', 'verified_link_sent', 'onboarded'))
    disposition_description = Field(String(192))
    disposition_comments = Field(String(192))
    created = Field(DateTime,default=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class RetryConfig(Entity):
    call_type = Field(Enum('fresh', 'followup', 'onboarding','default'))
    disposition_type = Field(Enum('ringing_no_answer', 'not_reachable'))
    retry_count = Field(Integer(unsigned=True))
    minutes_ahead = Field(Integer(unsigned=True))
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class RetailerLinks(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    retailer_id = Field(Integer(unsigned=True), unique=True)
    agent_id = Field(Integer(unsigned=True))
    code = Field(String(10), unique=True)
    mapped_with = Field(String(256))
    activated = Field(DateTime,onupdate=func.now())
    user_id = Field(Integer(unsigned=True))
    created = Field(DateTime,default=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class Activation_Codes(Entity):
    status = Field(Boolean,default=True, server_default='1')
    code = Field(String(10))
    created = Field(DateTime, default=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class Agents(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    name = Field(String(64))
    email =  Field(String(100))
    password = Field(String(64))
    type = Field(Enum('crm','fos'))
    last_login = Field(DateTime)
    login_type = Field(String(10))
    created = Field(DateTime, default=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class Agent_Roles(Entity):    
    id = Field(Integer(unsigned=True), primary_key=True)
    agent_id = Field(Integer(unsigned=True))
    role = Field(Enum('fresh','followup','onboarding'))
    created = Field(DateTime, default=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class AgentLoginTimings(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    agent_id = Field(Integer(unsigned=True))
    role = Field(Enum('fresh','followup','onboarding'))
    loginTime = Field(DateTime)
    logoutTime = Field(DateTime)
    created = Field(DateTime, default=func.now())   
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class Clicks(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    user_id = Field(Integer(unsigned=True))
    tag = Field(String(20))
    created = Field(DateTime, default=func.now())   
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class FetchDataHistory(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    retailer_id = Field(Integer(unsigned=True))
    agent_id = Field(Integer(unsigned=True))
    call_type = Field(String(10))
    last_action = Field(Enum('login','disposition'))
    last_action_time = Field(DateTime)
    created = Field(DateTime,default=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class Pushnotifications(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    user_id = Field(Integer(unsigned=True))
    notification_campaign_id = Field(Integer(unsigned=True))
    type = Field(String(16))
    status = Field(Boolean)
    message = Field(String(64))
    response_time = Field(DateTime)
    created = Field(DateTime)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
     
    
class MerchantSubOrders(Entity):
    orderId = Field(Integer, primary_key= True, autoincrement=False)
    merchantOrderId = Field(String(30), primary_key=True)
    merchantSubOrderId = Field(String(50), primary_key=True)
    storeId = Field(Integer)
    userId = Field(Integer)
    productCode = Field(String(50))
    brand = Field(String(30))
    productName = Field(String(50))
    categoryId = Field(Integer)
    amountPaid = Field(Float)
    quantity = Field(Integer)
    unitPrice = Field(Float)
    status = Field(String(30))
    createdTime = Field(DateTime)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class paytm_coupons(Entity):
    id = Field(Integer, primary_key= True)
    coupon = Field(String(64))
    offer_text = Field(String(256))
    min_cart_amount = Field(Integer)
    cart_item_limit = Field(Integer)
    max_cashback_amount = Field(Integer)
    usage_limit = Field(Integer)
    cod_available = Field(Integer)
    valid_upto = Field(DateTime)
    cashback_type = Enum(CASHBACK_AMOUNT, CASHBACK_PERCENTAGE)
    created = Field(DateTime,default=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class paytm_coupon_usages(Entity):
    id = Field(Integer, primary_key= True)
    user_id = Field(Integer)
    order_id = Field(Integer)
    coupon = Field(String(64))
    cashback = Field(Integer)
    created = Field(DateTime,default=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    

class paytm_coupon_non_usages(Entity):
    id = Field(Integer, primary_key= True)
    user_id = Field(Integer)
    order_id = Field(Integer)
    created = Field(DateTime,default=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

     
    
class NotificationViews(Entity):
    id = Field(Integer, primary_key= True)
    user_id = Field(Integer(unsigned=True))
    notification_rule_id = Field(Integer(unsigned=True))
    created = Field(DateTime)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class MissingAmazonOrderUsers(Entity):
    user_id = Field(Integer, primary_key= True)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
class PendingToTrackAmazonOrderUsers(Entity):
    user_id = Field(Integer, primary_key= True)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
    
class User_addresses(Entity):
    id = Field(Integer, primary_key= True)
    user_id =  Field(Integer(unsigned=True))
    store_name = Field(String(128))
    address = Field(String(256))
    city = Field(String(64)) 
    pincode = Field(String(6)) 
    state = Field(String(48))
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class All_user_addresses(Entity):
    id = Field(Integer, primary_key= True)
    user_id =  Field(Integer(unsigned=True))
    address = Field(String(256))
    store_name = Field(String(128))
    city = Field(String(64)) 
    pincode = Field(String(6)) 
    state = Field(String(48))
    source = Field(Enum('retailer_crm_edited', 'retailer_master', 'fos_crm', 'user_profile'))
    created = Field(DateTime,default=func.now()) 
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class user_filters(Entity):
    id = Field(Integer, primary_key= True)
    user_id =  Field(Integer(unsigned=True))
    type=Field(Enum('clear','brand'))
    filters = Field(String(256))
    created = Field(DateTime,default=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class app_offers(Entity):
    id = Field(Integer, primary_key=True)
    affiliate_id = Field(Integer)
    affiliate_offer_id = Field(String(256))
    offer_price = Field(Float)
    user_payout = Field(Float)
    override_payout = Field(Boolean)
    overriden_payout = Field(Float)
    app_name = Field(String(256))
    package_name = Field(String(256))
    image_url = Field(String(256))
    description = Field(Text)
    shortDescription = Field(Text)
    finalShortDescription = Field(Text) 
    longDescription = Field(Text)
    finalLongDescription = Field(Text)
    link = Field(String(256))
    offer_active = Field(Boolean)
    priority = Field(String(256))
    show = Field(Boolean)
    offerCategory = Field(String(256))
    promoImage = Field(String(256))
    ratings = Field(Float)
    downloads = Field(String(100)) 
    appmaster_id = Field(Integer)
    offerCondition = Field(Text)
    location = Field(String(1024))
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class app_affiliates(Entity):
    id = Field(Integer, primary_key=True)
    name = Field(String(256))
    isActive = Field(Boolean)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class appmasters(Entity):
    id = Field(Integer, primary_key=True, autoincrement=True)
    app_name = Field(String(256))
    package_name = Field(String(256))
    os_name = Field(Enum('ANDROID', 'IOS', 'WINDOWS'))
    shortDescription = Field(Text)
    longDescription = Field(Text)
    customerOneLiner = Field(String(512))
    retailerOneLiner = Field(String(512))
    showApp = Field(Boolean)
    rank = Field(Integer)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class approved_app_transactions(Entity):
    id = Field(Integer, primary_key=True, autoincrement=True)
    app_id = Field(Integer)
    retailer_id = Field(Integer)
    transaction_id = Field(String(100))
    transaction_time = Field(DateTime)
    redirect_url = Field(String(256))
    payout_status = Field(Integer)
    payout_description = Field(String(100))
    cashback_status = Field(Integer)
    cash_back_description = Field(String(100))
    payout_amount = Field(Integer)
    payout_time = Field(DateTime)
    offer_price = Field(Integer)
    overridenCashBack = Field(Integer)
    isCashBackOverriden = Field(Boolean)
    user_payout = Field(Integer)
    cashBackConsidered = Field(Boolean)
    final_user_payout = Field(Integer)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class user_app_cashbacks(Entity):
    user_id = Field(Integer)
    status = Field(String(30))
    amount = Field(Integer)
    fortnightOfYear = Field(Integer)
    yearVal = Field(Integer)
    batchCreditId = Field(Integer)
    creditedDate = Field(Date)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class user_app_installs(Entity):
    user_id = Field(Integer)
    fortnightOfYear = Field(Integer)
    transaction_date = Field(Date)
    app_id = Field(Integer)
    app_name = Field(String(256))
    installCount = Field(Integer)
    payoutAmount = Field(Integer)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class total_app_installs(Entity):
    app_id = Field(Integer)
    app_name = Field(String(256))
    date = Field(Date)
    totalPayoutAmount = Field(Integer)
    totalOfferAmount = Field(Integer)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class app_transactions(Entity):
    transaction_id=Field(String(256))
    retailer_id = Field(Integer)
    app_id = Field(Integer)
    app_name = Field(String(256))
    cashback_status= Field(Integer)
    redirect_url = Field(String(256))
    cash_back_description = Field(String(256))
    payout_status = Field(Integer)
    overridenCashBack = Field(Integer)
    isCashBackOverriden=Field(Boolean)
    transaction_time = Field(DateTime)
    payout_time = Field(DateTime)
    offer_price=Field(Float, default=0.0, server_default="0.0")
    payout_amount=Field(Float, default=0.0, server_default="0.0")
    user_payout = Field(Float, default=0.0, server_default="0.0")
    payout_description = Field(String(256))
    final_user_payout = Field(Integer)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class notification_campaigns(Entity):
    id = Field(Integer, primary_key=True, autoincrement=True)
    name = Field(String(32))
    title = Field(String(32))
    message = Field(String(512))
    type = Field(Enum('url','native','update'))
    url = Field(String(512))
    sql = Field(String(512))
    expiresat = Field(DateTime)
    status = Field(Enum('active','inactive'))
    created = Field(DateTime)
    sendsms = Field(Boolean)
    messagetext = Field(String(512))
    smsprocessed = Field(Boolean)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class mobileappsettings(Entity):
    id = Field(Integer, primary_key=True, autoincrement=True)
    setting = Field(String(64))
    value = Field(String(512))
    created = Field(DateTime)
    modified= Field(DateTime)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class UserCrmCallingData(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    user_id = Field(Integer(unsigned=True))
    name = Field(String(128))
    agent_id=Field(Integer(unsigned=True))
    project_id=Field(Integer(unsigned=True))
    user_available = Field(Integer(unsigned=True))
    contact1 = Field(String(10))
    pincode_servicable = Field(Boolean)
    status = Field(String(20))
    retry_count = Field(Integer(3))
    invalid_retry_count = Field(Integer(3))
    next_call_time = Field(DateTime)
    counter = Field(Integer(unsigned=True))
    disposition = Field(String(32))
    created = Field(DateTime, default=func.now())
    modified = Field(DateTime, default=func.now(), onupdate=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class CallHistoryCrm(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    user_id = Field(Integer(unsigned=True))
    agent_id = Field(Integer(unsigned=True))
    project_id = Field(Integer(unsigned=True))
    mobile_number = Field(String(10))
    call_time = Field(DateTime)
    duration_sec = Field(Integer)
    call_disposition = Field(Enum('call_later','ringing_no_answer', 'not_reachable', 'switch_off', 'technical_issue', 'pricing_issue', 'shipping_issue','internet_issue','checking_price', 'order_process', 'placed_order','place_order','product_availability','return_replacement','already_purchased','product_quality_issue','delayed_delivery','other_complaint','not_dealing_accessories'))
    disposition_description = Field(String(192))
    disposition_comments = Field(String(192))
    created = Field(DateTime,default=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class ProductPricingInputs(Entity):
    id = Field(Integer(unsigned=True), primary_key=True)
    user_id = Field(Integer(unsigned=True))
    disposition_id = Field(Integer(unsigned=True))
    call_disposition = Field(Enum('call_later','technical_issue', 'pricing_issue', 'shipping_issue','internet_issue','checking_price', 'order_process', 'placed_order','place_order'))
    agent_id = Field(Integer(unsigned=True))
    project_id = Field(Integer(unsigned=True))
    product_input = Field (String(256))
    pricing_input = Field(Float) 
    created = Field(DateTime,default=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class user_accounts(Entity):
    id =  Field(Integer(unsigned=True), primary_key=True)
    user_id =  Field(Integer(unsigned=True))
    account_type = Field(Enum('saholic','gcm_regid','cartId'))
    account_key = Field(String(128))
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class tinxys_stats(Entity):
    id =  Field(Integer(unsigned=True), primary_key=True)
    req_date = Field(Date, unique=True, default=func.curdate())
    total = Field(Integer, default=0)
    request_failed = Field(Integer, default=0)
    invalid_tin = Field(Integer, default=0)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")

class profitmandi_sms(Entity):
    id =  Field(Integer(unsigned=True), primary_key=True)
    mobile_number = Field(String(10))
    identifier = Field(Integer(unsigned=True))
    sms_type = Field(Enum('code'))
    sms_id = Field(String(128))
    status = Field(String(512))
    created = Field(DateTime, default=func.now())
    modified = Field(DateTime, default=func.now(), onupdate=func.now())
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
#it runs through the proxy
def initialize(dbname='dtr', db_hostname="127.0.0.1", echo=True, setup=True):
    #metadata.bind = "sqlite:///inventory-new.sqlite" #need to read it from configserver.
    #metadata.bind = 'mysql://root:shop2020@localhost/catalog'
    cengine = create_engine('mysql://root:shop2020@' + db_hostname + '/' + dbname, pool_recycle=7200)
    metadata.bind = cengine
    metadata.bind.echo = echo
    setup_all(setup)

if __name__=="__main__":
    initialize()