def test_save(): alias = make_alias(False) store = AliasStore() store.save(alias) stored_alias = get_session().query(Alias).filter( Alias.id == alias.id).first() assert stored_alias == alias
def make_alias(store: bool, **params) -> Alias: params.setdefault('value', str(uuid.uuid4())) params.setdefault('alias_generator', AliasGeneratorType.UUID) params.setdefault('public_alias', f'public_{params["value"]}') alias = Alias(**params) if store: session = get_session() session.add(alias) session.commit() return alias
def make_alias(store: bool) -> Alias: value = str(uuid.uuid4()) alias = Alias( value=value, alias_generator=AliasGeneratorType.UUID, public_alias=f'public_{value}', ) session = get_session() session.add(alias) session.commit() return alias
def test_cleanup(): session = get_session() session.query(Alias).delete() session.commit() persistent_store = AliasStore() alias1 = make_alias(False) persistent_store.save(alias1) volatile_store = AliasStore(60) alias2 = make_alias(False) volatile_store.save(alias2) alias3 = make_alias(False) AliasStore(-1).save(alias3) assert AliasStore.cleanup() == 1 persistent_store.get_by_value(alias1.value) is not None volatile_store.get_by_value(alias2.value) is not None volatile_store.get_by_value(alias3.value) is None
def cleanup() -> int: session = get_session() result = session.query(Alias).filter( Alias.expires_at < datetime.utcnow()).delete() session.commit() return result
def save(self, alias: Alias): session = get_session() if not self.is_persistent: alias.expires_at = datetime.utcnow() + timedelta(seconds=self._ttl) session.add(alias) session.commit()
def _query(self) -> Query: query = get_session().query(Alias) if self.is_persistent: return query.filter(Alias.expires_at.is_(None)) return query.filter(Alias.expires_at >= datetime.utcnow())
class MetaWithSession(type): sqlalchemy_session = property(lambda cls: get_session())
def setUp(self): super().setUp() session = get_session() session.query(Route).delete() session.commit()