o ¦ÝŽd÷ã@sDddlZddlmZddlmZejZdd„ZGdd„dejƒZdS) éN)Údatetimeé)Úk2cs6t ¡jdd…‰d ‡fdd„tdtˆƒdƒDƒ¡S)Né Úcsg|] }ˆ||d…‘qS)é©)Ú.0Úi©Z generated_idrúszgenerate_id..rr)ÚuuidÚuuid4ÚhexÚjoinÚrangeÚlenrrr r Ú generate_ids$rc@sÌeZdZdZdZddiZeje d¡de d�Z eje d¡dd �Z e e d ¡¡Z e e d ¡¡Z e e d ¡¡Ze ej¡Zejejejd �Zejejdd �Zd d„Zdd„Zedd„ƒZedd„ƒZdS)Ú ComponentÚdb2Ú componentÚextend_existingTé$)Ú primary_keyÚdefaultédF)ÚnullableéÈé)rcCs(||_||_||_||_||_||_dS©N)ÚnameÚ descriptionÚversionÚgit_linkÚ dependenciesÚ installed)Úselfr!r"r#r$r%r&rrr Ú__init__s  zComponent.__init__cCsd|j›d|j›d�S)Nz Component('z', 'z'))r!r#)r'rrr Ú__repr__szComponent.__repr__cCó tj t¡ tj|k¡ ¡}|Sr ©ÚdbÚsessionÚqueryrÚfilterÚidÚfirst©r'Zrep_idrrrr Úget_repository_by_idózComponent.get_repository_by_idcCr*r r+r2rrr r3#r4N)Ú__name__Ú __module__Ú __qualname__Ú __bind_key__Ú __tablename__Ú__table_args__r,ÚColumnÚStringrr0r!r"r#r$r%ÚDateTimerÚutcnowZdate_installedÚBooleanr&r(r)Ú classmethodr3rrrr r s$  r)rrÚk2cfgrr,rÚModelrrrrr Ús