Esempio n. 1
0
    def save(self, instance):
        """Save the instance to the database

        :param instance: an instance of modeled data object
        """
        _model = getattr(db_model, instance.__class__.__name__)
        session = self._engine_facade.session
        with session.begin():
            _pk = getattr(instance, instance.PK_NAME)
            if _pk is not None:
                _row = session.query(_model).get(_pk)
                _row = model_util.to_db(instance, _row)
            else:
                _row = model_util.to_db(instance)
                session.add(_row)
            _row.save(session)
        return model_util.from_db(_row)
Esempio n. 2
0
    def test_to_db(self):
        self.assertIsNone(model_util.to_db(None))

        _tor = api_model.Torrent.make_empty()
        _tor.torrent_id = 1
        _tor.name = 'fake.torrent'

        _db_tor = model_util.to_db(_tor)
        self.assertIsInstance(_db_tor, db_model.Torrent)

        _mf = api_model.MediaFile.make_empty()
        _mf.media_id = 1
        _mf.filename = 'media.mp4'
        _mf.file_ext = '.mp4'
        _mf.torrent_id = _tor.torrent_id

        _tor.media_files = [_mf]

        _db_tor = model_util.to_db(_tor)
        self.assertIsInstance(_db_tor, db_model.Torrent)
Esempio n. 3
0
    def bulk_create(self, instances):
        """Save the instances in bulk to the database.

        :param list instances: a list of instance of modeled data object
        """
        if not instances:
            return
        _instances = [model_util.to_db(item) for item in instances]

        session = self._engine_facade.session
        with session.begin():
            session.add_all(_instances)
        for _row in _instances:
            yield model_util.from_db(_row)