def most_starred_sync(model_name: str, query: str):
    app.logger.info('Importing repos of %s', model_name)

    model = getattr(report, model_name)
    service = bigquery.instance(app)

    db.session.query(model).delete()

    job = Job(service, query)
    job.execute()

    for row in results_of(job):
        info, code = repo_info(row[1])
        if not info:
            continue

        db.session.merge(
            model(id=row[0],
                  cnt_watch=row[2],
                  repo=Repo(id=info['id'],
                            name=info['name'],
                            language=info['language'],
                            full_name=info['full_name'],
                            description=info['description'],
                            html_url=info['html_url'],
                            homepage=info['homepage'],
                            created_at=datetime.strptime(
                                info['created_at'], '%Y-%m-%dT%H:%M:%SZ'))))

    db.session.commit()
 def setUpClass(cls):
     db.create_all()
     db.session.add(
         Repo(created_at=datetime.now(),
              description='test',
              full_name='test/test',
              html_url='http://py.test',
              id=1,
              name='test'))
     db.session.commit()
    def test_update_fields(self):
        entry = Repo()

        entry.homepage = 'example.com'
        self.assertEquals(entry.homepage, 'http://example.com')

        entry.description = ''
        self.assertEquals(entry.description, None)

        entry.description = 'atext' * 60
        self.assertEquals(len(entry.description), 250)
    def test_update_status_with_timestamp(self):
        entry = Repo()

        entry.html_url = 'http://example.com'
        self.assertIsNone(entry.status_updated_at)

        entry.status = 'unknown'
        status_updated_at = entry.status_updated_at
        self.assertEquals(entry.status, 'unknown')
        self.assertIsNotNone(status_updated_at)

        entry.status = 'unknown'
        self.assertEquals(entry.status_updated_at, status_updated_at)
    def test_accept_kwargs_in_constructor(self):
        entry = Repo(language='python')

        self.assertIsNone(entry.status_updated_at)
        self.assertEquals(entry.language, 'python')