class Record(db.Entity): id = PrimaryKey(UUID, auto=True) start = Required(datetime) end = Optional(datetime) size = Optional(float) path = Optional(str) status = Optional(str) removed = Required(bool, default=False) archive = Optional('Archive')
class Task(db.Entity): user_id = Required(int, size=64) chat_id = Required(int, size=64) owner_id = Required(int) title = Required(str) created = Required(datetime) done = Optional(datetime) due = Optional(datetime) description = Optional(str)
class GlobalVariable(db.Entity): _table_ = 'global_variable' id = PrimaryKey(int, auto=True) project_id = Required(str) create_at = Required(datetime.datetime, default=datetime.datetime.utcnow(), index=True) update_at = Required(datetime.datetime, default=datetime.datetime.utcnow(), index=True) delete_at = Optional(datetime.datetime, nullable=True) metadata = Required(Json, index=True) data = Required(Json, index=True) user = Required(str) info = Optional(Json) @classmethod @db_session def update_global_variable(cls, project_id, metadata, data, user): obj = get(n for n in GlobalVariable if n.project_id == project_id and n.delete_at == None) if obj: obj.data = data obj.metadata = metadata obj.user = user obj.update_at = datetime.datetime.utcnow() else: GlobalVariable(project_id=project_id, metadata=metadata, data=data, user=user) @classmethod @db_session def get_global_metadata_variable(cls, project_id): obj = get(n for n in GlobalVariable if n.project_id == project_id and n.delete_at == None) if obj: data = {'project_id': obj.project_id, 'metadata': obj.metadata} return data else: raise IsNotExist(title='全部变量不存在', detail=f'repo id为{project_id}的全局变量不存在') @classmethod @db_session def get_global_variable(cls, project_id): obj = get(n for n in GlobalVariable if n.project_id == project_id and n.delete_at == None) if obj: return obj.data else: raise IsNotExist(title='全部变量不存在', detail=f'repo id为{project_id}的全局变量不存在')
class MarketRepresentativeRegistry(database.Entity): marketRepresentative = Required(MarketRepresentative) time = Required(datetime.datetime, sql_type='TIMESTAMP WITH TIME ZONE', default=datetime.datetime.now(datetime.timezone.utc)) PrimaryKey(marketRepresentative, time) billed_energy_wh = Optional(int, size=64) billed_market_price_ce_mwh = Optional(int, size=64) cost_deviation_ce = Optional(int, size=64) absolute_deviation_ce = Optional(int, size=64)
class Patient(db.Entity): """ Patient Table """ id = PrimaryKey(int, auto=True) dni = Optional(int) name = Optional(str) lastname = Optional(str) secureid = Optional(str) email = Optional(str) turnos = Set('Agenda') medic = Set('Medic')
class Document(db.Entity): # url = pony.orm.core.Index(Required(str)) url_sha = PrimaryKey(str) url = Required(str, unique=True) filename = Required(str) mtime = Required(int) content = Optional(LongStr) content_sha = Optional(str) tokens = Set("Token") tokfreq = Required(bytes)
class MusicBrainzDetails(db.Entity): searched_title = Required(str) searched_artist = Required(str) musicbrainz_id = Optional(str) musicbrainz_json = Optional(str) # Only use the DECISION_[whatever] entries match_decision_source = Required(str, index=True) # Make searching on this fast + make it unique composite_key(searched_title, searched_artist)
class Coin(db.Entity): symbol = Required(str, unique=True) full_name = Optional(str) description = Optional(str) rank = Optional(int, default=0) is_valid = Required(int, default=1) ico_at = Optional(datetime) created_at = Required(datetime, sql_default='CURRENT_TIMESTAMP') marketcap_shots = Set('CoinMarketCapShot') yunbi_shots = Set('CoinYunbiShot')
class Test(db.Entity): """Jeden konkrétní test. """ _table_ = "test" id = PrimaryKey(int, column="id_test", auto=True) jmeno = Required(unicode, 80) ucitel = Required("Ucitel") otazky_testu = Set("Otazka_testu") vysledky_testu = Set(Vysledek_testu) zobrazeno_od = Optional(datetime) zobrazeno_do = Optional(datetime)
class Gif(db.Entity): id = PrimaryKey(int, auto=True) origin_host = Required(GifHosts, reverse='origin_gifs') origin_id = Required(str) reversed_host = Required(GifHosts, reverse='reversed_gifs') reversed_id = Required(str) time = Required(date) nsfw = Optional(bool) total_requests = Optional(int) last_requested_date = Optional(date)
class Project(db.Entity): # Project Information _table_ = 'project' uuid = PrimaryKey(uuid.UUID, default=uuid.uuid4) name = Required(str) tracker = Optional( Json) # {'issue': {'id': 'UUID'}, 'case': {'id': 'UUID'}} project = Optional(Json) # {'issue': {'key': ''}, 'case': {'key': ''}} status = Required(str, default='active') # active, disable, delete sprints = Set('Sprint')
class Event(db.Entity, UpdateableMixin): title = Required(str, 512) description = Required(LongStr) text = Required(LongStr) start_date = Required(datetime) end_date = Required(datetime) address = Optional(LongStr) created = Optional(datetime, default=datetime.now) updated = Optional(datetime, default=datetime.now) event_members = Set('EventMembers')
class Project(db.Entity): _table_ = 'Project' id = PrimaryKey(str) name = Required(str, unique=True) sub_name = Optional(str) description = Optional(str) host_group = Optional(str) host_names = Optional(str) tasks = Optional(str)
class Product(db.Entity): id = PrimaryKey(int, auto=True) name = Required(str) categories = Set("Category") description = Optional(str) picture = Optional(buffer) price = Required(Decimal) quantity = Required(int) cart_items = Set("CartItem") order_items = Set("OrderItem")
class ZuulBuild(db.Entity): _table_ = "zuul_build" buildset_id = Optional(ZuulBuildSet) uuid = Optional(str) job_name = Optional(str) result = Optional(str) start_time = Optional(datetime, 6) end_time = Optional(datetime, 6) voting = Optional(bool) log_url = Optional(str) node_name = Optional(str) @property def build_number(self): return self._get_build_number_from_log_url() @property def duration(self): if self.start_time and self.end_time: return self.end_time - self.start_time return None def _get_build_number_from_log_url(self): try: split_url = self.log_url.split('/') # there is another log_url format (on logs.contrail.juniper.net) # where element [-3] is never a int, but instead [-4] is if split_url[-3].isdigit(): return int(split_url[-3]) else: return int(split_url[-4]) except (ValueError, IndexError): return None
class Person(db.Entity, UpdateableMixin): firstname = Required(str, 255) lastname = Required(str, 255) email = Required(str, 64, unique=True) phone = Optional(str, 32) created = Optional(datetime, default=datetime.now) updated = Optional(datetime, default=datetime.now) event_members = Set('EventMembers') def __str__(self): return f'{self.firstname} {self.lastname}'
class User(db.Entity): telegram_id = Required(str) spotify_id = Optional(str) spotify_access_token = Optional(str) spotify_refresh_token = Optional(str) # modify_playback_state = Required(bool, default=False) # allowed_scopes = Required(List(str)) @property def spotify(self) -> Spotify: return Spotify(self)
class Category(db.Entity): """Категория товара""" title = Required(str, 50) description = Optional(LongStr) parent = Optional('Category', reverse='categories') #ссылка на саму себ media = Set('Media') products = Set('Product') categories = Set('Category', reverse='parent') def __str__(self): return self.title
class Work(db.Entity): createdBy = Required('User') created = Required(str) name = Required(str) iframe = Optional(str) embed = Optional(str) picture = Optional(str) github = Optional(str) code = Optional(str) description = Required(str) medium = Set('Medium')
class ORMGroup(db.Entity): _table_ = 'group_list' id = PrimaryKey(int, column='group_id') name = Optional(str, column='group_name') header = Optional(str, column='group_header') footer = Optional(str, column='group_footer') contacts = Set(lambda: ORMFixture.ORMContact, table="address_in_groups", column="id", reverse="groups", lazy=True)
class Customer(db.Entity): """Покупатель""" name = Required(str) email = Required(str) phone = Required(str) login = Required(str) password = Required(str) address = Optional(str) # Может быть сущностью comments = Set('Comment') orders = Set('Order') cart = Optional('Cart')
class Variable(db.Entity): _table_ = 'variable' id = PrimaryKey(int, auto=True) metadata = Required(Json, index=True) data = Required(Json, index=True) create_at = Required(datetime.datetime, default=datetime.datetime.utcnow(), index=True) update_at = Required(datetime.datetime, default=datetime.datetime.utcnow(), index=True) delete_at = Optional(datetime.datetime, nullable=True) user = Required(str) info = Optional(Json) env = Required(Env) @classmethod @db_session def update_variable(cls, env_id, metadata, data, user): obj = get(n for n in Variable if n.env.id == env_id and n.env.delete_at == None and n.delete_at == None) if obj: obj.user = user obj.update_at = datetime.datetime.utcnow() obj.metadata = metadata obj.data = data else: Variable(user=user, metadata=metadata, data=data, env=env_id) @classmethod @db_session def delete_variable_by_env_id(cls, env_id, user): obj = get(n for n in Variable if n.env.id == env_id and n.env.delete_at == None) if obj: obj.user = user obj.delete_at = datetime.datetime.utcnow() @classmethod @db_session def get_metadata_variable_by_env_id(cls, env_id): obj = get(n for n in Variable if n.env.id == env_id and n.env.delete_at == None and n.delete_at == None) if obj: return obj.metadata else: raise IsNotExist(title='环境里没有设置项目变量', detail=f'环境id为{env_id}的环境下没有找到项目变量') @classmethod @db_session def get_data_variable_by_env_id(cls, env_id): obj = get(n for n in Variable if n.env.id == env_id and n.env.delete_at == None and n.delete_at == None) if obj: return obj.data else: raise IsNotExist(title='环境里没有设置项目变量', detail=f'环境id为{env_id}的环境下没有找到项目变量')
class Entry(db.Entity): title = Required(str) description = Required(str) location = Required(str) state = Required('State') category = Required('Category') website = Optional(str) photo = Optional(str) lng = Required(float) lat = Required(float) created_by = Optional('User')
class User(db.Entity): # id = PrimaryKey(int, auto=True) name = Required(str, 32) password = Required(str, 8) gender = Optional(bool, default=True) birthday = Optional(date, nullable=True) phone = Optional(str, 11, nullable=True) photo = Optional(buffer, nullable=True) register = Required(datetime, sql_default='CURRENT_TIMESTAMP') _table_ = 'user'
class Product(db.Entity): """Товар""" category = Required('Category') title = Required(str) description = Optional(str) unit = Required(str) price = Required(float) #alt_categories = Set('Category') #anmount = int # кол-во товара магазина history = Set('ProductHistory') caritems = Optional('CartItems')
class Product(db.Entity): category = Optional('Category') # alt_categories = Set("Category") unit = Required(str) price = Required(float) description = Optional(str) title = Required(str) # amount = int history = Set('ProductHistory') cartitem = Optional('CartItem') orderitem = Set('OrderItem')
class Table6(Helper, _db.Entity): table2 = Required('Table2') table3 = Required('Table3') description = Required(str, unique=True) table6 = Optional('Table5') date_opened = Optional(dtt.datetime) date_closed = Optional(dtt.datetime) table4s = Set('Table4') table7s = Set('Table7') table8 = Required('Table8') table10 = Optional('Table10')
class Landmark(db.Entity): name = Required(str) description = Required(str) image = Required(str) ticket_price = Optional(float) start_time = Required(str) finish_time = Required(str) address = Required(str) lat = Optional(float) lng = Optional(float) cityname = Required(str) user = Required('User')
class Product(db.Entity): """Товар""" category = Optional('Category') title = Required(str) description = Optional(str) unit = Required(str) price = Required(float) # alt_category = Set('Category') # amount = int # количество товара в магазине сейчас history = Set('ProductHistory') cart_item = Optional('CartItem') order_item = Optional('OrderItem')
class Topic(db.Entity): def __repr__(self): return 'Topic: ' + self.title author = Required(User) date_created = Required(datetime) date_last_reply = Optional(datetime, nullable=True) posts = Set('Post') topic_type = Optional(str, nullable=True) title = Required(str) url = Required(str) topic_id = Required(str)