c3bd009442
Recording a subtitle is idempotent on both keys the schema carries: the sidecar path, and the language an embedded track satisfies, so a second probe or a re-import converges instead of duplicating. Attempts are upserted per (media file, language); the work list is every language that is not satisfied, newest import first, which is the order §15 wants the daily allowance spent in.
159 lines
3.8 KiB
JSON
159 lines
3.8 KiB
JSON
{
|
|
"db_name": "SQLite",
|
|
"query": "SELECT id AS \"id!: i64\",\n media_file_id AS \"media_file_id!: i64\",\n language AS \"language!: String\",\n origin AS \"origin!: SubtitleOrigin\",\n provider,\n candidate_id,\n engine,\n forced AS \"forced!: bool\",\n sdh AS \"sdh!: bool\",\n synced AS \"synced!: bool\",\n sync_rejected AS \"sync_rejected!: bool\",\n path\n FROM subtitle_files\n WHERE media_file_id = ?\n ORDER BY language, id",
|
|
"describe": {
|
|
"columns": [
|
|
{
|
|
"name": "id!: i64",
|
|
"ordinal": 0,
|
|
"type_info": "Integer",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "subtitle_files",
|
|
"name": "id"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "media_file_id!: i64",
|
|
"ordinal": 1,
|
|
"type_info": "Integer",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "subtitle_files",
|
|
"name": "media_file_id"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "language!: String",
|
|
"ordinal": 2,
|
|
"type_info": "Text",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "subtitle_files",
|
|
"name": "language"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "origin!: SubtitleOrigin",
|
|
"ordinal": 3,
|
|
"type_info": "Text",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "subtitle_files",
|
|
"name": "origin"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "provider",
|
|
"ordinal": 4,
|
|
"type_info": "Text",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "subtitle_files",
|
|
"name": "provider"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "candidate_id",
|
|
"ordinal": 5,
|
|
"type_info": "Text",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "subtitle_files",
|
|
"name": "candidate_id"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "engine",
|
|
"ordinal": 6,
|
|
"type_info": "Text",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "subtitle_files",
|
|
"name": "engine"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "forced!: bool",
|
|
"ordinal": 7,
|
|
"type_info": "Integer",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "subtitle_files",
|
|
"name": "forced"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "sdh!: bool",
|
|
"ordinal": 8,
|
|
"type_info": "Integer",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "subtitle_files",
|
|
"name": "sdh"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "synced!: bool",
|
|
"ordinal": 9,
|
|
"type_info": "Integer",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "subtitle_files",
|
|
"name": "synced"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "sync_rejected!: bool",
|
|
"ordinal": 10,
|
|
"type_info": "Integer",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "subtitle_files",
|
|
"name": "sync_rejected"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "path",
|
|
"ordinal": 11,
|
|
"type_info": "Text",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "subtitle_files",
|
|
"name": "path"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"parameters": {
|
|
"Right": 1
|
|
},
|
|
"nullable": [
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
true,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
true
|
|
]
|
|
},
|
|
"hash": "62d625c322c8c64b48317cdbf466d74043708d8e12997e0efec23a18eaaaaace"
|
|
}
|