1
0
mirror of https://github.com/gryf/slack-backup.git synced 2025-12-17 11:30:25 +01:00

Removed IdMap, added slackid column

This commit is contained in:
2016-11-20 15:12:47 +01:00
parent 71c0866699
commit 07f1b12fa0
2 changed files with 32 additions and 25 deletions

View File

@@ -1,23 +1,19 @@
""" """
Convinient object mapping from slack API reponses Convinient object mapping from slack API reponses
""" """
from sqlalchemy import Column, Integer, Text, Boolean, ForeignKey from datetime import datetime
from sqlalchemy import Column, Integer, Text, Boolean, ForeignKey, Sequence
from sqlalchemy import DateTime from sqlalchemy import DateTime
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from slack_backup.db import Base from slack_backup.db import Base
class IdMap(Base):
__tablename__ = 'idmap'
slackid = Column(Text, nullable=False, primary_key=True)
dbid = Column(Integer, nullable=False, primary_key=True,
autoincrement=False)
classname = Column(Text, nullable=False, primary_key=True)
class Purpose(Base): class Purpose(Base):
__tablename__ = 'purposes' __tablename__ = 'purposes'
__table_args__ = {'sqlite_autoincrement': True}
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
last_set = Column(DateTime, primary_key=True) last_set = Column(DateTime, primary_key=True)
value = Column(Text, primary_key=True) value = Column(Text, primary_key=True)
@@ -28,25 +24,26 @@ class Purpose(Base):
channel_id = Column(Integer, ForeignKey('channels.id'), index=True) channel_id = Column(Integer, ForeignKey('channels.id'), index=True)
channel = relationship("Channel", back_populates="purpose") channel = relationship("Channel", back_populates="purpose")
def __init__(self, creator, data_dict=None): def __init__(self, data_dict=None):
self.update(creator, data_dict) self.update(data_dict)
def update(self, creator, data_dict): def update(self, data_dict):
data_dict = data_dict or {} data_dict = data_dict or {}
self.last_set = data_dict.get('last_set', 0) self.last_set = datetime.fromtimestamp(data_dict.get('last_set', 0))
self.value = data_dict.get('value') self.value = data_dict.get('value')
self.creator = creator
def __repr__(self): def __repr__(self):
return u'<%s %s>' % (str(hex(id(self))), self.__unicode__()) return u'<%s %s>' % (str(hex(id(self))), self.__unicode__())
def __unicode__(self): def __unicode__(self):
return u', %s' % self.value return u', %s %s' % (self.id, self.value)
class Topic(Base): class Topic(Base):
__tablename__ = 'topics' __tablename__ = 'topics'
id = Column(Integer, primary_key=True) __table_args__ = {'sqlite_autoincrement': True}
id = Column(Integer, Sequence("file_id_seq"), primary_key=True)
last_set = Column(DateTime, primary_key=True) last_set = Column(DateTime, primary_key=True)
value = Column(Text, primary_key=True) value = Column(Text, primary_key=True)
@@ -56,31 +53,33 @@ class Topic(Base):
creator_id = Column(Integer, ForeignKey('users.id'), index=True) creator_id = Column(Integer, ForeignKey('users.id'), index=True)
creator = relationship("User", back_populates="topics") creator = relationship("User", back_populates="topics")
def __init__(self, creator, data_dict=None): def __init__(self, data_dict=None):
self.update(creator, data_dict) self.update(data_dict)
def update(self, creator, data_dict): def update(self, data_dict):
data_dict = data_dict or {} data_dict = data_dict or {}
self.last_set = data_dict.get('last_set', 0) self.last_set = datetime.fromtimestamp(data_dict.get('last_set', 0))
self.value = data_dict.get('value') self.value = data_dict.get('value')
self.creator = creator
def __repr__(self): def __repr__(self):
return u'<%s %s>' % (str(hex(id(self))), self.__unicode__()) return u'<%s %s>' % (str(hex(id(self))), self.__unicode__())
def __unicode__(self): def __unicode__(self):
return u', %s' % self.value return u', %s %s' % (self.id, self.value)
class Channel(Base): class Channel(Base):
__tablename__ = 'channels' __tablename__ = 'channels'
__table_args__ = {'sqlite_autoincrement': True}
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
slackid = Column(Text)
name = Column(Text) name = Column(Text)
created = Column(DateTime) created = Column(DateTime)
is_archived = Column(Boolean, default=False) is_archived = Column(Boolean, default=False)
creator_id = Column(Integer, ForeignKey("users.id"), index=True) creator_id = Column(Integer, ForeignKey("users.id"), nullable=True,
index=True)
creator = relationship("User", back_populates="channels") creator = relationship("User", back_populates="channels")
purpose = relationship("Purpose", uselist=False, back_populates="channel") purpose = relationship("Purpose", uselist=False, back_populates="channel")
@@ -92,8 +91,9 @@ class Channel(Base):
def update(self, data_dict): def update(self, data_dict):
data_dict = data_dict or {} data_dict = data_dict or {}
self.name = data_dict['name'] self.slackid = data_dict.get('id', '')
self.created = data_dict.get('created', '') self.name = data_dict.get('name', '')
self.created = datetime.fromtimestamp(data_dict.get('created', 0))
self.is_archived = data_dict.get('is_archived', False) self.is_archived = data_dict.get('is_archived', False)
def __repr__(self): def __repr__(self):
@@ -105,6 +105,8 @@ class Channel(Base):
class UserProfile(Base): class UserProfile(Base):
__tablename__ = "profiles" __tablename__ = "profiles"
__table_args__ = {'sqlite_autoincrement': True}
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey("users.id"), index=True) user_id = Column(Integer, ForeignKey("users.id"), index=True)
user = relationship("User", back_populates="profile") user = relationship("User", back_populates="profile")
@@ -142,7 +144,10 @@ class UserProfile(Base):
class User(Base): class User(Base):
__tablename__ = 'users' __tablename__ = 'users'
__table_args__ = {'sqlite_autoincrement': True}
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
slackid = Column(Text)
deleted = Column(Boolean, default=False) deleted = Column(Boolean, default=False)
name = Column(Text) name = Column(Text)
real_name = Column(Text) real_name = Column(Text)
@@ -158,6 +163,7 @@ class User(Base):
def update(self, data_dict=None): def update(self, data_dict=None):
data_dict = data_dict or {} data_dict = data_dict or {}
self.slackid = data_dict.get('id', '')
self.deleted = data_dict.get('deleted', False) self.deleted = data_dict.get('deleted', False)
self.name = data_dict.get("name", '') self.name = data_dict.get("name", '')
self.real_name = data_dict.get('real_name', '') self.real_name = data_dict.get('real_name', '')

View File

@@ -151,3 +151,4 @@ class TestClient(unittest.TestCase):
users = cl.session.query(objects.User).all() users = cl.session.query(objects.User).all()
self.assertEqual(len(users), 4) self.assertEqual(len(users), 4)
self.assertEqual(users[0].id, 1) self.assertEqual(users[0].id, 1)
self.assertEqual(users[0].slackid, 'UAAAAAAAA')