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
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}"
|
|
|