You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

126 lines
6.4 KiB

from minibase.app import db
from sqlalchemy import ForeignKey, DECIMAL, TIMESTAMP, CHAR, Text
class Country(db.Model):
__tablename__ = 'countries'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(100), nullable=False, unique=False)
iso3 = db.Column(CHAR(3), nullable=True, unique=False)
numeric_code = db.Column(CHAR(3), nullable=True, unique=False)
iso2 = db.Column(CHAR(2), nullable=True, unique=False)
phonecode = db.Column(db.String(255), nullable=True, unique=False)
capital = db.Column(db.String(255), nullable=True, unique=False)
currency = db.Column(db.String(255), nullable=True, unique=False)
currency_name = db.Column(db.String(255), nullable=True, unique=False)
currency_symbol = db.Column(db.String(255), nullable=True, unique=False)
tld = db.Column(db.String(255), nullable=True, unique=False)
native = db.Column(db.String(255), nullable=True, unique=False)
region = db.Column(db.String(255), nullable=True, unique=False)
region_id = db.Column(db.Integer, ForeignKey('regions.id'), nullable=True)
subregion = db.Column(db.String(255), nullable=True, unique=False)
subregion_id = db.Column(db.Integer, ForeignKey('subregions.id'), nullable=True)
nationality = db.Column(db.String(255), nullable=True, unique=False)
timezones = db.Column(Text, nullable=True, unique=False)
translations = db.Column(Text, nullable=True, unique=False)
latitude = db.Column(DECIMAL(10, 8), nullable=True, unique=False)
longitude = db.Column(DECIMAL(11, 8), nullable=True, unique=False)
emoji = db.Column(db.String(191), nullable=True, unique=False)
emojiU = db.Column(db.String(191), nullable=True, unique=False)
created_at = db.Column(TIMESTAMP, nullable=True)
updated_at = db.Column(TIMESTAMP, nullable=False, server_default='CURRENT_TIMESTAMP', server_onupdate='CURRENT_TIMESTAMP')
flag = db.Column(db.Boolean, nullable=False, default=True)
wikiDataId = db.Column(db.String(255), nullable=True, unique=False, comment='Rapid API GeoDB Cities')
regions = db.relationship('Region', back_populates='countries')
subregions = db.relationship('Subregion', back_populates='countries')
cities = db.relationship('City', back_populates='country')
states = db.relationship('State', back_populates='country')
companies = db.relationship('Companies', backref='country', lazy='dynamic')
def __repr__(self):
return f"{self.name}"
class City(db.Model):
__tablename__ = 'cities'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(255), nullable=False)
state_id = db.Column(db.Integer, ForeignKey('states.id'), nullable=False)
state_code = db.Column(db.String(255), nullable=False)
country_id = db.Column(db.Integer, ForeignKey('countries.id'), nullable=False)
country_code = db.Column(CHAR(2), nullable=False)
latitude = db.Column(DECIMAL(10, 8), nullable=False)
longitude = db.Column(DECIMAL(11, 8), nullable=False)
created_at = db.Column(TIMESTAMP, nullable=True)
updated_at = db.Column(TIMESTAMP, nullable=False, server_default='CURRENT_TIMESTAMP', server_onupdate='CURRENT_TIMESTAMP')
flag = db.Column(db.Boolean, nullable=False, default=True)
wikiDataId = db.Column(db.String(255), nullable=True, unique=False, comment='Rapid API GeoDB Cities')
country = db.relationship('Country', back_populates='cities')
state = db.relationship('State', back_populates='cities')
companies = db.relationship('Companies', backref='city', lazy='dynamic')
def __repr__(self):
return f"{self.name}"
class Region(db.Model):
__tablename__ = 'regions'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(100), nullable=False)
translations = db.Column(Text, nullable=True, unique=False)
created_at = db.Column(TIMESTAMP, nullable=True)
updated_at = db.Column(TIMESTAMP, nullable=False, server_default='CURRENT_TIMESTAMP', server_onupdate='CURRENT_TIMESTAMP')
flag = db.Column(db.Boolean, nullable=False, default=True)
wikiDataId = db.Column(db.String(255), nullable=True, unique=False, comment='Rapid API GeoDB Cities')
countries = db.relationship('Country', back_populates='regions')
subregions = db.relationship('Subregion', back_populates='region')
class State(db.Model):
__tablename__ = 'states'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(255), nullable=False)
country_id = db.Column(db.Integer, ForeignKey('countries.id'), nullable=False)
country_code = db.Column(CHAR(2), nullable=False)
fips_code = db.Column(db.String(255), nullable=True, unique=False)
iso2 = db.Column(db.String(255), nullable=True, unique=False)
type = db.Column(db.String(191), nullable=True, unique=False)
latitude = db.Column(DECIMAL(10, 8), nullable=True, unique=False)
longitude = db.Column(DECIMAL(11, 8), nullable=True, unique=False)
created_at = db.Column(TIMESTAMP, nullable=True)
updated_at = db.Column(TIMESTAMP, nullable=False, server_default='CURRENT_TIMESTAMP', server_onupdate='CURRENT_TIMESTAMP')
flag = db.Column(db.Boolean, nullable=False, default=True)
wikiDataId = db.Column(db.String(255), nullable=True, unique=False, comment='Rapid API GeoDB Cities')
country = db.relationship('Country', back_populates='states')
cities = db.relationship('City', back_populates='state')
companies = db.relationship('Companies', backref='state', lazy='dynamic')
def __repr__(self):
return f"{self.name}"
class Subregion(db.Model):
__tablename__ = 'subregions'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(100), nullable=False)
translations = db.Column(Text, nullable=True, unique=False)
region_id = db.Column(db.Integer, ForeignKey('regions.id'), nullable=False)
created_at = db.Column(TIMESTAMP, nullable=True)
updated_at = db.Column(TIMESTAMP, nullable=False, server_default='CURRENT_TIMESTAMP', server_onupdate='CURRENT_TIMESTAMP')
flag = db.Column(db.Boolean, nullable=False, default=True)
wikiDataId = db.Column(db.String(255), nullable=True, unique=False, comment='Rapid API GeoDB Cities')
region = db.relationship('Region', back_populates='subregions')
countries = db.relationship('Country', back_populates='subregions')
def __repr__(self):
return f"{self.name}"