コード例 #1
0
ファイル: __init__.py プロジェクト: jad837/kinto-1
    def get(
        self,
        resource_name,
        parent_id,
        object_id,
        id_field=DEFAULT_ID_FIELD,
        modified_field=DEFAULT_MODIFIED_FIELD,
    ):
        query = """
        SELECT as_epoch(last_modified) AS last_modified, data
          FROM objects
         WHERE id = :object_id
           AND parent_id = :parent_id
           AND resource_name = :resource_name
           AND NOT deleted;
        """
        placeholders = dict(object_id=object_id, parent_id=parent_id, resource_name=resource_name)
        with self.client.connect(readonly=True) as conn:
            result = conn.execute(query, placeholders)
            if result.rowcount == 0:
                raise exceptions.ObjectNotFoundError(object_id)
            else:
                existing = result.fetchone()

        obj = existing["data"]
        obj[id_field] = object_id
        obj[modified_field] = existing["last_modified"]
        return obj
コード例 #2
0
ファイル: __init__.py プロジェクト: thakarey/kinto
    def delete(
        self,
        resource_name,
        parent_id,
        object_id,
        id_field=DEFAULT_ID_FIELD,
        with_deleted=True,
        modified_field=DEFAULT_MODIFIED_FIELD,
        deleted_field=DEFAULT_DELETED_FIELD,
        auth=None,
        last_modified=None,
    ):
        if with_deleted:
            query = """
            UPDATE objects
               SET deleted=TRUE,
                   data=(:deleted_data)::JSONB,
                   last_modified=from_epoch(:last_modified)
             WHERE id = :object_id
               AND parent_id = :parent_id
               AND resource_name = :resource_name
               AND NOT deleted
            RETURNING as_epoch(last_modified) AS last_modified;
            """
        else:
            query = """
            DELETE FROM objects
            WHERE id = :object_id
               AND parent_id = :parent_id
               AND resource_name = :resource_name
               AND NOT deleted
            RETURNING as_epoch(last_modified) AS last_modified;
            """
        deleted_data = self.json.dumps(dict([(deleted_field, True)]))
        placeholders = dict(
            object_id=object_id,
            parent_id=parent_id,
            resource_name=resource_name,
            last_modified=last_modified,
            deleted_data=deleted_data,
        )

        with self.client.connect() as conn:
            result = conn.execute(query, placeholders)
            if result.rowcount == 0:
                raise exceptions.ObjectNotFoundError(object_id)
            updated = result.fetchone()

        obj = {}
        obj[modified_field] = updated["last_modified"]
        obj[id_field] = object_id

        obj[deleted_field] = True
        return obj
コード例 #3
0
ファイル: memory.py プロジェクト: jad837/kinto-1
 def get(
     self,
     resource_name,
     parent_id,
     object_id,
     id_field=DEFAULT_ID_FIELD,
     modified_field=DEFAULT_MODIFIED_FIELD,
 ):
     objects = self._store[parent_id][resource_name]
     if object_id not in objects:
         raise exceptions.ObjectNotFoundError(object_id)
     return {**objects[object_id]}
コード例 #4
0
ファイル: test_storage.py プロジェクト: zeroyou/kinto
 def object_not_found(*args, **kwargs):
     raise exceptions.ObjectNotFoundError()