diff --git a/swh/lister/core/models.py b/swh/lister/core/models.py index 589918d..15a1441 100644 --- a/swh/lister/core/models.py +++ b/swh/lister/core/models.py @@ -1,82 +1,50 @@ # Copyright (C) 2015-2017 the Software Heritage developers # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information import abc from datetime import datetime from sqlalchemy import Column, DateTime, Integer, String from sqlalchemy.ext.declarative import declarative_base, DeclarativeMeta from .abstractattribute import AbstractAttribute SQLBase = declarative_base() class ABCSQLMeta(abc.ABCMeta, DeclarativeMeta): pass class ModelBase(SQLBase, metaclass=ABCSQLMeta): """a common repository""" __abstract__ = True __tablename__ = AbstractAttribute uid = AbstractAttribute('Column(, primary_key=True)') name = Column(String, index=True) full_name = Column(String, index=True) html_url = Column(String) origin_url = Column(String) origin_type = Column(String) description = Column(String) last_seen = Column(DateTime, nullable=False) task_id = Column(Integer) origin_id = Column(Integer) - def __init__(self, uid=None, name=None, full_name=None, - html_url=None, origin_url=None, origin_type=None, - description=None, task_id=None, origin_id=None): - self.uid = uid - self.last_seen = datetime.now() - - if name is not None: - self.name = name - if full_name is not None: - self.full_name = full_name - if html_url is not None: - self.html_url = html_url - if origin_url is not None: - self.origin_url = origin_url - if origin_type is not None: - self.origin_type = origin_type - if description is not None: - self.description = description - - if task_id is not None: - self.task_id = task_id - if origin_id is not None: - self.origin_id = origin_id + def __init__(self, **kw): + kw['last_seen'] = datetime.now() + super().__init__(**kw) class IndexingModelBase(ModelBase, metaclass=ABCSQLMeta): __abstract__ = True __tablename__ = AbstractAttribute # The value used for sorting, segmenting, or api query paging, # because uids aren't always sequential. indexable = AbstractAttribute('Column(, index=True)') - - def __init__(self, uid=None, name=None, full_name=None, - html_url=None, origin_url=None, origin_type=None, - description=None, task_id=None, origin_id=None, - indexable=None): - super().__init__( - uid=uid, name=name, full_name=full_name, html_url=html_url, - origin_url=origin_url, origin_type=origin_type, - description=description, task_id=task_id, origin_id=origin_id) - - if indexable is not None: - self.indexable = indexable diff --git a/swh/lister/github/models.py b/swh/lister/github/models.py index 2cb429f..6584b34 100644 --- a/swh/lister/github/models.py +++ b/swh/lister/github/models.py @@ -1,20 +1,16 @@ # Copyright (C) 2017-2018 the Software Heritage developers # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information from sqlalchemy import Column, Boolean, Integer from swh.lister.core.models import IndexingModelBase class GitHubModel(IndexingModelBase): """a GitHub repository""" __tablename__ = 'github_repos' uid = Column(Integer, primary_key=True) indexable = Column(Integer, index=True) - fork = Column(Boolean) - - def __init__(self, *args, **kwargs): - self.fork = kwargs.pop('fork', False) - super().__init__(*args, **kwargs) + fork = Column(Boolean, default=False) diff --git a/swh/lister/gitlab/models.py b/swh/lister/gitlab/models.py index 2b045a3..1302e67 100644 --- a/swh/lister/gitlab/models.py +++ b/swh/lister/gitlab/models.py @@ -1,28 +1,17 @@ # Copyright (C) 2018 the Software Heritage developers # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information from sqlalchemy import Column, String from ..core.models import ModelBase class GitLabModel(ModelBase): """a Gitlab repository from a gitlab instance """ __tablename__ = 'gitlab_repo' uid = Column(String, primary_key=True) instance = Column(String, index=True) - - def __init__(self, uid=None, indexable=None, name=None, - full_name=None, html_url=None, origin_url=None, - origin_type=None, description=None, task_id=None, - origin_id=None, instance=None): - super().__init__(uid=uid, name=name, - full_name=full_name, html_url=html_url, - origin_url=origin_url, origin_type=origin_type, - description=description, task_id=task_id, - origin_id=origin_id) - self.instance = instance