[db] Refactor queue_item functions

- Use prepared statements
- Add qi_mfi_map that defines mapping between mfi, dbmfi and qi
- Use qi_cols_map/qi_mfi_map for iteration (avoid duplicating field references)
- Stick to "qi" as name for a queue_item in db.c (more similar to mfi/pli/gri)
- Some renaming and other minor stuff in db.c's queue code
This commit is contained in:
ejurgensen
2021-01-24 01:14:56 +01:00
parent 76c52bba3b
commit 689d1ce3dd
6 changed files with 382 additions and 265 deletions

View File

@@ -543,7 +543,7 @@ void
free_query_params(struct query_params *qp, int content_only);
void
free_queue_item(struct db_queue_item *queue_item, int content_only);
free_queue_item(struct db_queue_item *qi, int content_only);
/* Maintenance and DB hygiene */
void
@@ -816,8 +816,14 @@ int
db_speaker_get(struct output_device *device, uint64_t id);
/* Queue */
void
db_queue_item_from_mfi(struct db_queue_item *qi, struct media_file_info *mfi); // Use free_queue_item(qi, 0) to free
void
db_queue_item_from_dbmfi(struct db_queue_item *qi, struct db_media_file_info *dbmfi); // Do not free qi content
int
db_queue_update_item(struct db_queue_item *queue_item);
db_queue_item_update(struct db_queue_item *qi);
int
db_queue_add_by_queryafteritemid(struct query_params *qp, uint32_t item_id);
@@ -838,7 +844,7 @@ int
db_queue_add_end(struct db_queue_add_info *queue_add_info, char reshuffle, uint32_t item_id, int ret);
int
db_queue_add_item(struct db_queue_add_info *queue_add_info, struct db_queue_item *item);
db_queue_add_next(struct db_queue_add_info *queue_add_info, struct db_queue_item *qi);
int
db_queue_enum_start(struct query_params *qp);
@@ -847,7 +853,7 @@ void
db_queue_enum_end(struct query_params *qp);
int
db_queue_enum_fetch(struct query_params *qp, struct db_queue_item *queue_item);
db_queue_enum_fetch(struct query_params *qp, struct db_queue_item *qi);
struct db_queue_item *
db_queue_fetch_byitemid(uint32_t item_id);