From 2661cd8a0cfa281a37a22a1414c06f2badce04cf Mon Sep 17 00:00:00 2001 From: Justin Maggard Date: Wed, 16 May 2012 01:22:11 +0000 Subject: [PATCH] * Move database-specific DB creation bits to a separate file. --- scanner.c | 65 +++++------------------------------- scanner_sqlite.h | 87 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 57 deletions(-) create mode 100644 scanner_sqlite.h diff --git a/scanner.c b/scanner.c index 920c09b..3196e8f 100644 --- a/scanner.c +++ b/scanner.c @@ -62,6 +62,7 @@ #include +#include "scanner_sqlite.h" #include "upnpglobalvars.h" #include "metadata.h" #include "playlist.h" @@ -589,75 +590,25 @@ CreateDatabase(void) BROWSEDIR_ID, "0", _("Browse Folders"), 0 }; - ret = sql_exec(db, "CREATE TABLE OBJECTS ( " - "ID INTEGER PRIMARY KEY AUTOINCREMENT, " - "OBJECT_ID TEXT UNIQUE NOT NULL, " - "PARENT_ID TEXT NOT NULL, " - "REF_ID TEXT DEFAULT NULL, " - "CLASS TEXT NOT NULL, " - "DETAIL_ID INTEGER DEFAULT NULL, " - "NAME TEXT DEFAULT NULL" - ");"); + ret = sql_exec(db, create_objectTable_sqlite); if( ret != SQLITE_OK ) goto sql_failed; - ret = sql_exec(db, "CREATE TABLE DETAILS ( " - "ID INTEGER PRIMARY KEY AUTOINCREMENT, " - "PATH TEXT DEFAULT NULL, " - "SIZE INTEGER, " - "TIMESTAMP INTEGER, " - "TITLE TEXT COLLATE NOCASE, " - "DURATION TEXT, " - "BITRATE INTEGER, " - "SAMPLERATE INTEGER, " - "CREATOR TEXT COLLATE NOCASE, " - "ARTIST TEXT COLLATE NOCASE, " - "ALBUM TEXT COLLATE NOCASE, " - "GENRE TEXT COLLATE NOCASE, " - "COMMENT TEXT, " - "CHANNELS INTEGER, " - "DISC INTEGER, " - "TRACK INTEGER, " - "DATE DATE, " - "RESOLUTION TEXT, " - "THUMBNAIL BOOL DEFAULT 0, " - "ALBUM_ART INTEGER DEFAULT 0, " - "ROTATION INTEGER, " - "DLNA_PN TEXT, " - "MIME TEXT" - ")"); + ret = sql_exec(db, create_detailTable_sqlite); if( ret != SQLITE_OK ) goto sql_failed; - ret = sql_exec(db, "CREATE TABLE ALBUM_ART ( " - "ID INTEGER PRIMARY KEY AUTOINCREMENT, " - "PATH TEXT NOT NULL" - ")"); + ret = sql_exec(db, create_albumArtTable_sqlite); if( ret != SQLITE_OK ) goto sql_failed; - ret = sql_exec(db, "CREATE TABLE CAPTIONS (" - "ID INTEGER PRIMARY KEY, " - "PATH TEXT NOT NULL" - ")"); + ret = sql_exec(db, create_captionTable_sqlite); if( ret != SQLITE_OK ) goto sql_failed; - ret = sql_exec(db, "CREATE TABLE BOOKMARKS (" - "ID INTEGER PRIMARY KEY, " - "SEC INTEGER" - ")"); + ret = sql_exec(db, create_bookmarkTable_sqlite); if( ret != SQLITE_OK ) goto sql_failed; - ret = sql_exec(db, "CREATE TABLE PLAYLISTS (" - "ID INTEGER PRIMARY KEY AUTOINCREMENT, " - "NAME TEXT NOT NULL, " - "PATH TEXT NOT NULL, " - "ITEMS INTEGER DEFAULT 0, " - "FOUND INTEGER DEFAULT 0" - ")"); + ret = sql_exec(db, create_playlistTable_sqlite); if( ret != SQLITE_OK ) goto sql_failed; - ret = sql_exec(db, "CREATE TABLE SETTINGS (" - "UPDATE_ID INTEGER PRIMARY KEY DEFAULT 0, " - "FLAGS INTEGER DEFAULT 0" - ")"); + ret = sql_exec(db, create_settingsTable_sqlite); if( ret != SQLITE_OK ) goto sql_failed; ret = sql_exec(db, "INSERT into SETTINGS values (0, 0)"); diff --git a/scanner_sqlite.h b/scanner_sqlite.h new file mode 100644 index 0000000..4d14d42 --- /dev/null +++ b/scanner_sqlite.h @@ -0,0 +1,87 @@ +/* Media table definitions for SQLite database + * + * Project : minidlna + * Website : http://sourceforge.net/projects/minidlna/ + * Author : Douglas Carmichael + * + * MiniDLNA media server + * Copyright (C) 2008-2009 Justin Maggard + * + * This file is part of MiniDLNA. + * + * MiniDLNA is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * MiniDLNA is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MiniDLNA. If not, see . + */ + +char create_objectTable_sqlite[] = "CREATE TABLE OBJECTS (" + "ID INTEGER PRIMARY KEY AUTOINCREMENT, " + "OBJECT_ID TEXT UNIQUE NOT NULL, " + "PARENT_ID TEXT NOT NULL, " + "REF_ID TEXT DEFAULT NULL, " + "CLASS TEXT NOT NULL, " + "DETAIL_ID INTEGER DEFAULT NULL, " + "NAME TEXT DEFAULT NULL);"; + +char create_detailTable_sqlite[] = "CREATE TABLE DETAILS (" + "ID INTEGER PRIMARY KEY AUTOINCREMENT, " + "PATH TEXT DEFAULT NULL, " + "SIZE INTEGER, " + "TIMESTAMP INTEGER, " + "TITLE TEXT COLLATE NOCASE, " + "DURATION TEXT, " + "BITRATE INTEGER, " + "SAMPLERATE INTEGER, " + "CREATOR TEXT COLLATE NOCASE, " + "ARTIST TEXT COLLATE NOCASE, " + "ALBUM TEXT COLLATE NOCASE, " + "GENRE TEXT COLLATE NOCASE, " + "COMMENT TEXT, " + "CHANNELS INTEGER, " + "DISC INTEGER, " + "TRACK INTEGER, " + "DATE DATE, " + "RESOLUTION TEXT, " + "THUMBNAIL BOOL DEFAULT 0, " + "ALBUM_ART INTEGER DEFAULT 0, " + "ROTATION INTEGER, " + "DLNA_PN TEXT, " + "MIME TEXT);"; + +char create_albumArtTable_sqlite[] = "CREATE TABLE ALBUM_ART (" + "ID INTEGER PRIMARY KEY AUTOINCREMENT, " + "PATH TEXT NOT NULL" + ");"; + +char create_captionTable_sqlite[] = "CREATE TABLE CAPTIONS (" + "ID INTEGER PRIMARY KEY, " + "PATH TEXT NOT NULL" + ");"; + +char create_bookmarkTable_sqlite[] = "CREATE TABLE BOOKMARKS (" + "ID INTEGER PRIMARY KEY, " + "SEC INTEGER" + ");"; + +char create_playlistTable_sqlite[] = "CREATE TABLE PLAYLISTS (" + "ID INTEGER PRIMARY KEY AUTOINCREMENT, " + "NAME TEXT NOT NULL, " + "PATH TEXT NOT NULL, " + "ITEMS INTEGER DEFAULT 0, " + "FOUND INTEGER DEFAULT 0" + ");"; + +char create_settingsTable_sqlite[] = "CREATE TABLE SETTINGS (" + "UPDATE_ID INTEGER PRIMARY KEY DEFAULT 0, " + "FLAGS INTEGER DEFAULT 0" + ");"; + +