Beispiel #1
0
 def _lookup_id(id: str, table: Type[database.BaseModel],
                session: SqlSession) -> Type[database.BaseModel]:
     """lookup row by id"""
     row = session.query(table).filter(table.id == id).first()
     if not row:
         raise NotFoundError(f"{table.__name__} {id} not found")
     return row
 def delete_collection(self, id: str, **kwargs) -> schemas.Collection:
     """delete collection"""
     with self.session.writer.context_session() as session:
         query = session.query(
             self.collection_table).filter(self.collection_table.id == id)
         data = query.first()
         if not data:
             raise NotFoundError(f"Collection {id} not found")
         query.delete()
         data.base_url = str(kwargs["request"].base_url)
         return schemas.Collection.from_orm(data)
Beispiel #3
0
 def delete_item(self, id: str, **kwargs) -> schemas.Item:
     """Delete item."""
     with self.session.writer.context_session() as session:
         query = session.query(
             self.item_table).filter(self.item_table.id == id)
         data = query.first()
         if not data:
             raise NotFoundError(f"Item {id} not found")
         query.delete()
         data.base_url = str(kwargs["request"].base_url)
         return schemas.Item.from_orm(data)
 def update_collection(self, model: schemas.Collection,
                       **kwargs) -> schemas.Collection:
     """update collection"""
     with self.session.reader.context_session() as session:
         query = session.query(self.collection_table).filter(
             self.collection_table.id == model.id)
         if not query.scalar():
             raise NotFoundError(f"Item {model.id} not found")
         # SQLAlchemy orm updates don't seem to like geoalchemy types
         data = self.collection_table.get_database_model(model)
         data.pop("geometry", None)
         query.update(data)
     return model
    def update_item(self, model: schemas.Item, **kwargs) -> schemas.Item:
        """update item"""
        with self.session.reader.context_session() as session:
            query = session.query(
                self.item_table).filter(self.item_table.id == model.id)
            if not query.scalar():
                raise NotFoundError(f"Item {model.id} not found")
            # SQLAlchemy orm updates don't seem to like geoalchemy types
            data = self.item_table.get_database_model(model)
            data.pop("geometry", None)
            query.update(data)

            response = self.item_table.from_schema(model)
            response.base_url = str(kwargs["request"].base_url)
            return schemas.Item.from_orm(response)
        return model