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