Skip to content

Commit

Permalink
Add support for keeping track of images in metadata db
Browse files Browse the repository at this point in the history
  • Loading branch information
andoma committed Oct 5, 2011
1 parent f706219 commit cbc49ff
Show file tree
Hide file tree
Showing 2 changed files with 99 additions and 0 deletions.
7 changes: 7 additions & 0 deletions resources/metadb/002.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

CREATE TABLE imageitem (
item_id INTEGER UNIQUE REFERENCES item(id) ON DELETE CASCADE,
original_time INTEGER
);
CREATE INDEX imageitem_item_id_idx ON imageitem(item_id);

92 changes: 92 additions & 0 deletions src/metadata.c
Original file line number Diff line number Diff line change
Expand Up @@ -654,6 +654,54 @@ metadb_insert_videoitem(sqlite3 *db, int64_t item_id, const metadata_t *md)



/**
*
*/
static int
metadb_insert_imageitem(sqlite3 *db, int64_t item_id, const metadata_t *md)
{
int i;
int rc = 0;
for(i = 0; i < 2; i++) {
sqlite3_stmt *stmt;

rc = sqlite3_prepare_v2(db,
i == 0 ?
"INSERT OR FAIL INTO imageitem "
"(item_id, original_time) "
"VALUES "
"(?1, ?2)"
:
"UPDATE imageitem SET "
"original_time = ?2 "
"WHERE item_id = ?1"
,
-1, &stmt, NULL);

if(rc != SQLITE_OK) {
TRACE(TRACE_ERROR, "SQLITE", "SQL Error at %s:%d",
__FUNCTION__, __LINE__);
return -1;
}
sqlite3_bind_int64(stmt, 1, item_id);

if(md->md_time)
sqlite3_bind_int(stmt, 2, md->md_time);

rc = sqlite3_step(stmt);
sqlite3_finalize(stmt);
if(rc == SQLITE_CONSTRAINT && i == 0)
continue;
break;
}

if(rc != SQLITE_DONE)
return 1;
return 0;
}






Expand Down Expand Up @@ -736,6 +784,10 @@ metadb_metadata_write(void *db, const char *url, time_t mtime,
r = metadb_insert_videoitem(db, item_id, md);
break;

case CONTENT_IMAGE:
r = metadb_insert_imageitem(db, item_id, md);
break;

case CONTENT_DIR:
case CONTENT_DVD:
r = 0;
Expand Down Expand Up @@ -992,6 +1044,42 @@ metadb_metadata_get_streams(sqlite3 *db, metadata_t *md, int64_t item_id)
}


/**
*
*/
static int
metadb_metadata_get_image(sqlite3 *db, metadata_t *md, int64_t item_id)
{
int rc;
sqlite3_stmt *sel;

rc = sqlite3_prepare_v2(db,
"SELECT original_time "
"FROM imageitem "
"WHERE item_id = ?1",
-1, &sel, NULL);
if(rc != SQLITE_OK) {
TRACE(TRACE_ERROR, "SQLITE", "SQL Error at %s:%d",
__FUNCTION__, __LINE__);
return -1;
}

sqlite3_bind_int64(sel, 1, item_id);

rc = sqlite3_step(sel);

if(rc != SQLITE_ROW) {
sqlite3_finalize(sel);
return -1;
}

md->md_time = sqlite3_column_int(sel, 0);

sqlite3_finalize(sel);
return 0;
}


/**
*
*/
Expand All @@ -1014,6 +1102,10 @@ metadata_get(void *db, int item_id, int contenttype, get_cache_t *gc)
r = metadb_metadata_get_streams(db, md, item_id);
break;

case CONTENT_IMAGE:
r = metadb_metadata_get_image(db, md, item_id);
break;

case CONTENT_DIR:
case CONTENT_DVD:
r = 0;
Expand Down

0 comments on commit cbc49ff

Please sign in to comment.