47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
"""Меняет связь 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)"
|
||
)
|