Add Changeset class

This commit is contained in:
Edward Betts 2021-06-20 15:01:23 +02:00
parent ae7d68462f
commit 7aaa18cf24
1 changed files with 35 additions and 2 deletions

View File

@ -1,8 +1,8 @@
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.schema import ForeignKey, Column from sqlalchemy.schema import ForeignKey, Column
from sqlalchemy.orm import relationship, column_property, deferred from sqlalchemy.orm import relationship, column_property, deferred, backref
from sqlalchemy import func from sqlalchemy import func
from sqlalchemy.types import Integer, String, Float, Boolean, DateTime, Text from sqlalchemy.types import Integer, String, Float, Boolean, DateTime, Text, BigInteger
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
from sqlalchemy.sql.expression import cast from sqlalchemy.sql.expression import cast
from sqlalchemy.ext.hybrid import hybrid_property from sqlalchemy.ext.hybrid import hybrid_property
@ -20,6 +20,10 @@ Base.query = session.query_property()
re_point = re.compile(r'^POINT\((.+) (.+)\)$') re_point = re.compile(r'^POINT\((.+) (.+)\)$')
osm_type_enum = postgresql.ENUM('node', 'way', 'relation',
name='osm_type_enum',
metadata=Base.metadata)
class Item(Base): class Item(Base):
__tablename__ = "item" __tablename__ = "item"
item_id = Column(Integer, primary_key=True, autoincrement=False) item_id = Column(Integer, primary_key=True, autoincrement=False)
@ -295,3 +299,32 @@ class User(Base, UserMixin):
def is_active(self): def is_active(self):
return self.active return self.active
class Changeset(Base):
__tablename__ = 'changeset'
id = Column(BigInteger, primary_key=True)
created = Column(DateTime)
comment = Column(String)
user_id = Column(Integer, ForeignKey(User.id))
update_count = Column(Integer, nullable=False)
user = relationship('User',
backref=backref('changesets',
lazy='dynamic',
order_by='Changeset.created.desc()'))
class ChangesetEdit(Base):
__tablename__ = 'changeset_edit'
changeset_id = Column(BigInteger,
ForeignKey('changeset.id'),
primary_key=True)
item_id = Column(Integer, primary_key=True)
osm_id = Column(BigInteger, primary_key=True)
osm_type = Column(osm_type_enum, primary_key=True)
saved = Column(DateTime, default=now_utc(), nullable=False)
changeset = relationship('Changeset',
backref=backref('edits', lazy='dynamic'))