ef4722e1dd
sqlx-sqlite 0.8 ignored Migration.no_tx and wrapped every migration in a transaction, where PRAGMA foreign_keys = OFF is a no-op — so any table rebuild cascade-deleted children. 0.9 honours `-- no-transaction`, so 0014 drops its movie_releases_backup / episode_releases_backup workaround and runs the plain rebuild recipe with foreign keys off. A migration test rebuilds both parents from a pre-0014 database and asserts the child link rows survive. Closes #155 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
101 lines
2.8 KiB
JSON
101 lines
2.8 KiB
JSON
{
|
|
"db_name": "SQLite",
|
|
"query": "\n SELECT e.id AS \"id!: i64\",\n e.number AS \"number!: i64\",\n e.air_date,\n e.wanted AS \"wanted!: bool\",\n e.search_attempts AS \"search_attempts!: i64\",\n e.last_searched_at,\n EXISTS (\n SELECT 1 FROM media_files f\n WHERE f.owner_kind = 'episode' AND f.owner_id = e.id\n ) AS \"has_file!: bool\",\n EXISTS (\n SELECT 1 FROM grabs g\n WHERE g.target_kind = 'episode' AND g.target_id = e.id\n AND g.state IN ('sent', 'downloaded', 'imported')\n ) AS \"in_flight!: bool\"\n FROM episodes e\n WHERE e.season_id = ?\n ORDER BY e.number\n ",
|
|
"describe": {
|
|
"columns": [
|
|
{
|
|
"name": "id!: i64",
|
|
"ordinal": 0,
|
|
"type_info": "Integer",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "episodes",
|
|
"name": "id"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "number!: i64",
|
|
"ordinal": 1,
|
|
"type_info": "Integer",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "episodes",
|
|
"name": "number"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "air_date",
|
|
"ordinal": 2,
|
|
"type_info": "Text",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "episodes",
|
|
"name": "air_date"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "wanted!: bool",
|
|
"ordinal": 3,
|
|
"type_info": "Integer",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "episodes",
|
|
"name": "wanted"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "search_attempts!: i64",
|
|
"ordinal": 4,
|
|
"type_info": "Integer",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "episodes",
|
|
"name": "search_attempts"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "last_searched_at",
|
|
"ordinal": 5,
|
|
"type_info": "Text",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "episodes",
|
|
"name": "last_searched_at"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "has_file!: bool",
|
|
"ordinal": 6,
|
|
"type_info": "Integer",
|
|
"origin": "Expression"
|
|
},
|
|
{
|
|
"name": "in_flight!: bool",
|
|
"ordinal": 7,
|
|
"type_info": "Integer",
|
|
"origin": "Expression"
|
|
}
|
|
],
|
|
"parameters": {
|
|
"Right": 1
|
|
},
|
|
"nullable": [
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
false
|
|
]
|
|
},
|
|
"hash": "33de7e17f5defa761de0d6e174dca40e2d883b9990bec497355422f5b5e6dfe5"
|
|
}
|