Example #1
0
    def _fill_relations(self, schemes_d, pks):
        if not pks:
            return

        query = select(
            [tbl.concept_relation.c.id,
             tbl.concept_relation.c.scheme_id,
             tbl.concept_relation.c.name]
        ).where(
            tbl.concept_relation.c.scheme_id.in_(pks)
        )

        result = self.session.execute(query).fetchall()
        for pk, scheme_id, name in result:
            relation = Relation(schemes_d[scheme_id], name)
            relation._alchemy_pk = pk
            schemes_d[scheme_id].relations._add_raw(relation)
Example #2
0
    def _fetch(self, params, offset, limit):
        records = self._fetch_records(
            [tbl.concept_relation.c.id,
             tbl.concept_relation.c.name,
             tbl.concept_relation.c.scheme_id, ],
            params, offset, limit
        )
        result = []
        for pk, name, scheme_id in records:
            relation = self.conn.identity_map.get('relations', pk)
            if relation:
                result.append(relation)
            else:
                scheme = self.conn.identity_map.get('schemes', scheme_id)
                if not scheme:
                    raise NotImplementedError
                relation = Relation(scheme, name)
                relation._alchemy_pk = pk
                self.conn.identity_map.put('relations', pk, relation)
                result.append(relation)

        return result