67 lines
1.9 KiB
Python
67 lines
1.9 KiB
Python
from playhouse.migrate import *
|
|
|
|
|
|
"""
|
|
This migration assumes that downloads.db kept the exact same structure as before.
|
|
messages.db should drop the table articlemodelreference in favor of a new field article in the thread-table
|
|
Since each thread is constrained to exactly one article this makes the most sense.
|
|
|
|
This migration assumes that messages.db gets a new field in the table thread:
|
|
id | thread_ts | article_id
|
|
|
|
We now need to migrate from the table articlemodelreference and then delete it.
|
|
"""
|
|
|
|
|
|
db = SqliteDatabase("/code/.dev/messages.db")
|
|
migrator = SqliteMigrator(db)
|
|
|
|
|
|
article_field = IntegerField(null=True)
|
|
|
|
|
|
migrate(
|
|
migrator.add_column('thread', 'article_id', article_field),
|
|
# migrator.drop_column('some_table', 'old_column'),
|
|
)
|
|
|
|
|
|
|
|
# these are the old models, adapted to the migration
|
|
|
|
class BaseModel(Model):
|
|
class Meta:
|
|
database = db
|
|
|
|
class User(BaseModel):
|
|
user_id = CharField(default='', unique=True)
|
|
|
|
class Thread(BaseModel):
|
|
"""The threads that concern us are only created if the messages that contain urls"""
|
|
thread_ts = FloatField(default = 0)
|
|
article_id = IntegerField(null=True)
|
|
|
|
|
|
class Message(BaseModel):
|
|
ts = FloatField(unique=True) #for sorting
|
|
channel_id = CharField(default='')
|
|
user = ForeignKeyField(User, backref="messages")
|
|
text = TextField(default='')
|
|
thread = ForeignKeyField(Thread, backref="messages", default=None)
|
|
file_type = CharField(default='')
|
|
perma_link = CharField(default='')
|
|
is_processed_override = BooleanField(default=False)
|
|
|
|
|
|
class ArticleModelReference(BaseModel):
|
|
message = ForeignKeyField(Message, backref='article_model_references')
|
|
article_model_id = IntegerField(default = 0)
|
|
|
|
|
|
|
|
|
|
for ref in ArticleModelReference.select():
|
|
ref.message.thread.article_id = ref.article_model_id
|
|
ref.message.thread.save()
|
|
|
|
db.drop_tables((ArticleModelReference)) |