Esempio n. 1
0
    def test_scalar_array_fields(self):
        mapping = {
            'db': {
                'col1': {
                    'field': {
                        'type': '_ARRAY_OF_SCALARS'
                    }
                },
                'col2': {
                    'field': {
                        'type': 'TEXT'
                    }
                }
            }
        }
        got = mappings.get_scalar_array_fields(mapping, 'db', 'col1')
        self.assertEqual(got, ['field'])

        got = mappings.get_scalar_array_fields(mapping, 'db', 'col2')
        self.assertEqual(got, [])

        got = mappings.get_scalar_array_fields(mapping, 'db', 'missing_col')
        self.assertEqual(got, [])

        got = mappings.get_scalar_array_fields(mapping, 'missing_db', 'col')
        self.assertEqual(got, [])
Esempio n. 2
0
    def upsert_scalar_array_fields(self, collection, cursor, db, document, mapped_document, namespace, timestamp):
        for scalarArrayField in get_scalar_array_fields(self.mappings, db, collection):
            dest = self.mappings[db][collection][scalarArrayField]['dest']
            fk = self.mappings[db][collection][scalarArrayField]['fk']
            value_field = self.mappings[db][collection][scalarArrayField]['valueField']
            dest_namespace = u"{0}.{1}".format(db, dest)

            values = get_nested_field_from_document(document, scalarArrayField)

            if values is not None and isinstance(values, list):
                for value in values:
                    updated_item = {fk: mapped_document[get_primary_key(self.mappings, namespace)], value_field: value}
                    self._upsert(dest_namespace, updated_item, cursor, timestamp)
    def upsert_scalar_array_fields(self, collection, cursor, db, document, mapped_document, namespace, timestamp):
        for scalarArrayField in get_scalar_array_fields(self.mappings, db, collection):
            dest = self.mappings[db][collection][scalarArrayField]['dest']
            fk = self.mappings[db][collection][scalarArrayField]['fk']
            value_field = self.mappings[db][collection][scalarArrayField]['valueField']
            dest_namespace = u"{0}.{1}".format(db, dest)

            values = get_nested_field_from_document(document, scalarArrayField)

            if values is not None and isinstance(values, list):
                for value in values:
                    updated_item = {fk: mapped_document[get_primary_key(self.mappings, namespace)], value_field: value}
                    self._upsert(dest_namespace, updated_item, cursor, timestamp)