добавил систему миграций и связь одной записи Redmine с несколькими активностями Clockify и запретил отправку трудочасов при инициализации базы данных
This commit is contained in:
46
migrations/a7f3c9e1_redmine_clockify_relation.py
Normal file
46
migrations/a7f3c9e1_redmine_clockify_relation.py
Normal file
@@ -0,0 +1,46 @@
|
||||
"""Меняет связь Redmine и Clockify с один-к-одному на один-ко-многим."""
|
||||
|
||||
import sqlite3
|
||||
|
||||
|
||||
def upgrade(connection: sqlite3.Connection):
|
||||
"""Переносит внешний ключ записи Redmine в активности Clockify."""
|
||||
connection.execute(
|
||||
"""ALTER TABLE activity
|
||||
ADD COLUMN time_entry_id INTEGER REFERENCES time_entry(id)"""
|
||||
)
|
||||
connection.execute(
|
||||
"""UPDATE activity
|
||||
SET time_entry_id = (
|
||||
SELECT time_entry.id
|
||||
FROM time_entry
|
||||
WHERE time_entry.activity_id = activity.id
|
||||
LIMIT 1
|
||||
)"""
|
||||
)
|
||||
connection.execute(
|
||||
"""CREATE TABLE time_entry_new (
|
||||
id INTEGER PRIMARY KEY,
|
||||
description VARCHAR NOT NULL,
|
||||
date DATETIME NOT NULL,
|
||||
time_spent NUMERIC NOT NULL,
|
||||
task_id INTEGER NOT NULL,
|
||||
activity_type_id INTEGER NOT NULL,
|
||||
author_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (author_id) REFERENCES user(id),
|
||||
FOREIGN KEY (task_id) REFERENCES task(id),
|
||||
FOREIGN KEY (activity_type_id) REFERENCES activity_type(id)
|
||||
)"""
|
||||
)
|
||||
connection.execute(
|
||||
"""INSERT INTO time_entry_new(
|
||||
id, description, date, time_spent, task_id, activity_type_id, author_id
|
||||
)
|
||||
SELECT id, description, date, time_spent, task_id, activity_type_id, author_id
|
||||
FROM time_entry"""
|
||||
)
|
||||
connection.execute("DROP TABLE time_entry")
|
||||
connection.execute("ALTER TABLE time_entry_new RENAME TO time_entry")
|
||||
connection.execute(
|
||||
"CREATE INDEX activity_time_entry_id_idx ON activity(time_entry_id)"
|
||||
)
|
||||
Reference in New Issue
Block a user