summaryrefslogtreecommitdiff
path: root/lib/tabledef.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tabledef.c')
-rw-r--r--lib/tabledef.c856
1 files changed, 856 insertions, 0 deletions
diff --git a/lib/tabledef.c b/lib/tabledef.c
new file mode 100644
index 0000000..d4bb6a9
--- /dev/null
+++ b/lib/tabledef.c
@@ -0,0 +1,856 @@
+/*
+ * tabledef.c
+ *
+ * See the README file for copyright information and how to reach the author.
+ *
+ */
+
+#include "tabledef.h"
+
+//***************************************************************************
+// cEpgdState
+//***************************************************************************
+
+const char* cEpgdState::states[] =
+{
+ "init",
+ "standby",
+ "stopped",
+
+ "busy (events)",
+ "busy (match)",
+ "busy (images)",
+ "busy (scraping)",
+
+ 0
+};
+
+const char* cEpgdState::toName(cEpgdState::State s)
+{
+ if (!isValid(s))
+ return "unknown";
+
+ return states[s];
+}
+
+cEpgdState::State cEpgdState::toState(const char* name)
+{
+ for (int i = 0; i < esCount; i++)
+ if (strcmp(states[i], name) == 0)
+ return (State)i;
+
+ return esUnknown;
+}
+
+//***************************************************************************
+// Event Fields
+//***************************************************************************
+//***************************************************************************
+// Fields
+//***************************************************************************
+
+cDbService::FieldDef cTableEvents::fields[] =
+{
+ // name format size index type
+
+ // primary key
+
+ { "eventid", ffUInt, 0, fiEventId, ftPrimary },
+ { "channelid", ffAscii, 50, fiChannelId, ftPrimary },
+
+ { "masterid", ffUInt, 0, fiMasterId, ftAutoinc },
+ { "useid", ffUInt, 0, fiUseId, ftData },
+
+ // meta
+
+ { "source", ffAscii, 10, fiSource, ftMeta },
+ { "fileref", ffAscii, 50, fiFileRef, ftMeta },
+ { "inssp", ffInt, 10, fiInsSp, ftMeta },
+ { "updsp", ffInt, 10, fiUpdSp, ftMeta },
+ { "updflg", ffAscii, 1, fiUpdFlg, ftMeta },
+ { "delflg", ffAscii, 1, fiDelFlg, ftMeta },
+
+ // vdr event data
+
+ { "tableid", ffInt, 2, fiTableId, ftData },
+ { "version", ffInt, 3, fiVersion, ftData },
+ { "title", ffAscii, 200, fiTitle, ftData },
+ { "comptitle", ffAscii, 200, fiCompTitle, ftData },
+ { "shorttext", ffAscii, 300, fiShortText, ftData },
+ { "compshorttext", ffAscii, 300, fiCompShortText, ftData },
+ { "longdescription", ffText, 25000, fiLongDescription, ftData },
+ { "starttime", ffInt, 10, fiStartTime, ftData },
+ { "duration", ffInt, 5, fiDuration, ftData },
+ { "parentalrating", ffInt, 2, fiParentalRating, ftData },
+ { "vps", ffInt, 10, fiVps, ftData },
+
+ { "description", ffText, 50000, fiDescription, ftCalc },
+
+ // additional external data
+
+ { "shortdescription", ffAscii, 3000, fiShortDescription, ftData },
+ { "actor", ffAscii, 3000, fiActor, ftData },
+ { "audio", ffAscii, 50, fiAudio, ftData },
+ { "category", ffAscii, 50, fiCategory, ftData },
+ { "country", ffAscii, 50, fiCountry, ftData },
+ { "director", ffAscii, 250, fiDirector, ftData },
+ { "flags", ffAscii, 100, fiFlags, ftData },
+ { "genre", ffAscii, 100, fiGenre, ftData },
+ { "info", ffText, 10000, fiInfo, ftData },
+ { "music", ffAscii, 250, fiMusic, ftData },
+ { "producer", ffText, 1000, fiProducer, ftData },
+ { "screenplay", ffAscii, 500, fiScreenplay, ftData },
+ { "shortreview", ffAscii, 500, fiShortreview, ftData },
+ { "tipp", ffAscii, 250, fiTipp, ftData },
+ { "topic", ffAscii, 500, fiTopic, ftData },
+ { "year", ffAscii, 10, fiYear, ftData },
+ { "rating", ffAscii, 250, fiRating, ftData },
+ { "fsk", ffAscii, 2, fiFsk, ftData },
+ { "movieid", ffAscii, 20, fiMovieid, ftData },
+ { "moderator", ffAscii, 250, fiModerator, ftData },
+ { "other", ffText, 2000, fiOther, ftData },
+ { "guest", ffText, 1000, fiGuest, ftData },
+ { "camera", ffText, 1000, fiCamera, ftData },
+
+ { "extepnum", ffInt, 4, fiExtEpNum, ftData },
+ { "imagecount", ffInt, 2, fiImageCount, ftData },
+
+ // episodes (constable)
+
+ { "episode", ffAscii, 250, fiEpisode, ftData },
+ { "episodepart", ffAscii, 250, fiEpisodePart, ftData },
+ { "episodelang", ffAscii, 3, fiEpisodeLang, ftData },
+
+ // tv scraper
+
+ { "scrseriesid", ffInt, 11, fiScrSeriesId, ftData },
+ { "scrseriesepisode", ffInt, 11, fiScrSeriesEpisode, ftData },
+ { "scrmovieid", ffInt, 11, fiScrMovieId, ftData },
+ { "scrsp", ffInt, 11, fiScrSp, ftData },
+
+ { 0 }
+};
+
+cDbService::FieldDef* cTableEvents::toField(const char* name)
+{
+ for (int i = 0; i < fiCount; i++)
+ if (strcmp(fields[i].name, name) == 0)
+ return &fields[i];
+
+ tell(0, "Request for unexpected field '%s', ignoring", name);
+
+ return 0;
+}
+
+cDbService::IndexDef cTableEvents::indices[] =
+{
+ // index fields
+
+ { "comptitle", { fiCompTitle, na }, 0 },
+ { "source", { fiSource, na }, 0 },
+ { "FilerefSource", { fiFileRef, fiSource, na }, 0 },
+ { "channelid", { fiChannelId, na }, 0 },
+ { "useid", { fiUseId, na }, 0 },
+ { "useidchannelid", { fiUseId, fiChannelId, na }, 0 },
+ { "updflgupdsp", { fiUpdFlg, fiUpdSp, na }, 0 },
+ { "idxsourcechannelid", { fiSource, fiChannelId, na }, 0 },
+
+ { 0 }
+};
+
+//***************************************************************************
+// Components
+//***************************************************************************
+
+cDbService::FieldDef cTableComponents::fields[] =
+{
+ // name format size index type
+
+ { "eventid", ffUInt, 0, fiEventId, ftPrimary },
+ { "channelid", ffAscii, 50, fiChannelId, ftPrimary },
+ { "stream", ffInt, 3, fiStream, ftPrimary },
+ { "type", ffInt, 3, fiType, ftPrimary },
+ { "lang", ffAscii, 8, fiLang, ftPrimary },
+ { "description", ffAscii, 100, fiDescription, ftPrimary },
+
+ { "inssp", ffInt, 0, fiInsSp, ftMeta },
+ { "updsp", ffInt, 0, fiUpdSp, ftMeta },
+
+ { 0 }
+};
+
+//***************************************************************************
+// File References
+//***************************************************************************
+
+cDbService::FieldDef cTableFileRefs::fields[] =
+{
+ // name format size index type
+
+ { "name", ffAscii, 100, fiName, ftPrimary },
+ { "source", ffAscii, 10, fiSource, ftPrimary },
+
+ { "inssp", ffInt, 0, fiInsSp, ftMeta },
+ { "updsp", ffInt, 0, fiUpdSp, ftMeta },
+
+ { "extid", ffAscii, 10, fiExternalId, ftData },
+ { "fileref", ffAscii, 100, fiFileRef, ftData }, // name + '-' + tag
+ { "tag", ffAscii, 100, fiTag, ftData },
+
+ { 0 }
+};
+
+cDbService::IndexDef cTableFileRefs::indices[] =
+{
+ // index fields
+
+ { "SourceFileref", { fiSource, fiFileRef, na }, 0 },
+ { "Fileref", { fiFileRef, na }, 0 },
+
+ { 0 }
+};
+
+//***************************************************************************
+// Image Ref Fields
+//***************************************************************************
+
+cDbService::FieldDef cTableImageRefs::fields[] =
+{
+ // name format size index type
+
+ { "eventid", ffUInt, 0, fiEventId, ftPrimary },
+ { "lfn", ffInt, 0, fiLfn, ftPrimary },
+
+ { "inssp", ffInt, 0, fiInsSp, ftMeta },
+ { "updsp", ffInt, 0, fiUpdSp, ftMeta },
+ { "source", ffAscii, 10, fiSource, ftMeta },
+
+ { "fileref", ffAscii, 100, fiFileRef, ftData },
+ { "imagename", ffAscii, 100, fiImgName, ftData },
+
+ { 0 }
+};
+
+cDbService::IndexDef cTableImageRefs::indices[] =
+{
+ // index fields
+
+ { "lfn", { fiLfn, na }, 0 },
+ { "name", { fiImgName, na }, 0 },
+
+ { 0 }
+};
+
+//***************************************************************************
+// Image Fields
+//***************************************************************************
+
+cDbService::FieldDef cTableImages::fields[] =
+{
+ // name format size index type
+
+ { "imagename", ffAscii, 100, fiImgName, ftPrimary },
+
+ { "inssp", ffInt, 0, fiInsSp, ftMeta },
+ { "updsp", ffInt, 0, fiUpdSp, ftMeta },
+
+ { "image", ffMlob, 200000, fiImage, ftData },
+
+ { 0 }
+};
+
+//***************************************************************************
+// Series Episode Fields
+//***************************************************************************
+
+cDbService::FieldDef cTableEpisodes::fields[] =
+{
+ // name format size index type
+
+ // primary key
+
+ { "compname", ffAscii, 100, fiCompName, ftPrimary }, // episode name compressed
+ { "comppartname", ffAscii, 200, fiCompPartName, ftPrimary }, // part name compressed
+ { "lang", ffAscii, 10, fiLang, ftPrimary },
+
+ { "inssp", ffInt, 0, fiInsSp, ftMeta },
+ { "updsp", ffInt, 0, fiUpdSp, ftMeta },
+ { "link", ffInt, 0, fiLink, ftData },
+
+ // episode data
+
+ { "shortname", ffAscii, 100, fiShortName, ftData },
+ { "episodename", ffAscii, 100, fiEpisodeName, ftData }, // episode name
+
+ // part data
+
+ { "partname", ffAscii, 300, fiPartName, ftData }, // part name
+ { "season", ffInt, 0, fiSeason, ftData },
+ { "part", ffInt, 0, fiPart, ftData },
+ { "parts", ffInt, 0, fiParts, ftData },
+ { "number", ffInt, 0, fiNumber, ftData },
+
+ { "extracol1", ffAscii, 250, fiExtraCol1, ftData },
+ { "extracol2", ffAscii, 250, fiExtraCol2, ftData },
+ { "extracol3", ffAscii, 250, fiExtraCol3, ftData },
+
+ { "comment", ffAscii, 250, fiComment, ftData },
+
+ { 0 }
+};
+
+cDbService::IndexDef cTableEpisodes::indices[] =
+{
+ // index fields
+
+ { "updsp", { fiUpdSp, na }, 0 },
+
+ { 0 }
+};
+
+//***************************************************************************
+// Channel Map Fields
+//***************************************************************************
+
+cDbService::FieldDef cTableChannelMap::fields[] =
+{
+ // name format size index type
+
+ { "extid", ffAscii, 10, fiExternalId, ftPrimary },
+ { "channelid", ffAscii, 50, fiChannelId, ftPrimary },
+ { "source", ffAscii, 20, fiSource, ftPrimary },
+
+ { "channelname", ffAscii, 100, fiChannelName, ftData },
+
+ { "vps", ffInt, 0, fiVps, ftData },
+ { "merge", ffInt, 0, fiMerge, ftData },
+ { "mergesp", ffInt, 0, fiMergeSp, ftData },
+
+ { "inssp", ffInt, 0, fiInsSp, ftMeta },
+ { "updsp", ffInt, 0, fiUpdSp, ftMeta },
+ { "updflg", ffAscii, 1, fiUpdFlg, ftMeta },
+
+ { 0 }
+};
+
+cDbService::IndexDef cTableChannelMap::indices[] =
+{
+ // index fields
+
+ { "sourceExtid", { fiSource, fiExternalId, na }, 0 },
+ { "source", { fiSource, na }, 0 },
+ { "updflg", { fiUpdFlg, na }, 0 },
+ { "idxsourcechannelid", { fiSource, fiChannelId, na }, 0 },
+
+ { 0 }
+};
+
+//***************************************************************************
+// VDRs Fields
+//***************************************************************************
+
+cDbService::FieldDef cTableVdrs::fields[] =
+{
+ // name format size index type
+
+ { "uuid", ffAscii, 40, fiUuid, ftPrimary },
+
+ { "inssp", ffInt, 0, fiInsSp, ftMeta },
+ { "updsp", ffInt, 0, fiUpdSp, ftMeta },
+
+ { "name", ffAscii, 100, fiName, ftData },
+ { "version", ffAscii, 100, fiVersion, ftData },
+ { "dbapi", ffUInt, 0, fiDbApi, ftData },
+ { "lastupd", ffInt, 0, fiLastUpdate, ftData },
+ { "nextupd", ffInt, 0, fiNextUpdate, ftData },
+ { "state", ffAscii, 20, fiState, ftData },
+ { "master", ffAscii, 1, fiMaster, ftData },
+ { "ip", ffAscii, 20, fiIp, ftData },
+
+ { 0 }
+};
+
+//***************************************************************************
+// Parameter Fields
+//***************************************************************************
+
+cDbService::FieldDef cTableParameters::fields[] =
+{
+ // name format size index type
+
+ { "owner", ffAscii, 40, fiOwner, ftPrimary },
+ { "name", ffAscii, 40, fiName, ftPrimary },
+
+ { "inssp", ffInt, 0, fiInsSp, ftMeta },
+ { "updsp", ffInt, 0, fiUpdSp, ftMeta },
+
+ { "value", ffAscii, 100, fiValue, ftData },
+
+ { 0 }
+};
+
+//***************************************************************************
+// Analyse
+//***************************************************************************
+
+cDbService::FieldDef cTableAnalyse::fields[] =
+{
+ // name format size index type
+
+ { "channelid", ffAscii, 50, fiChannelId, ftPrimary },
+ { "vdr_masterid", ffUInt, 0, fiVdrMasterId, ftData },
+ { "vdr_eventid", ffUInt, 0, fiVdrEventId, ftPrimary },
+
+ { "vdr_starttime", ffInt, 10, fiVdrStartTime, ftData },
+ { "vdr_duration", ffInt, 5, fiVdrDuration, ftData },
+ { "vdr_title", ffAscii, 200, fiVdrTitle, ftData },
+ { "vdr_shorttext", ffAscii, 300, fiVdrShortText, ftData },
+
+ { "ext_masterid", ffUInt, 0, fiExtMasterId, ftData },
+ { "ext_eventid", ffUInt, 0, fiExtEventId, ftData },
+ { "ext_starttime", ffInt, 10, fiExtStartTime, ftData },
+ { "ext_duration", ffInt, 5, fiExtDuration, ftData },
+ { "ext_title", ffAscii, 200, fiExtTitle, ftData },
+ { "ext_shorttext", ffAscii, 300, fiExtShortText, ftData },
+ { "ext_episode", ffAscii, 1, fiExtEpisode, ftData },
+ { "ext_merge", ffInt, 11, fiExtMerge, ftData },
+ { "ext_images", ffAscii, 1, fiExiImages, ftData },
+
+ { "lvmin", ffInt, 3, fiLvMin, ftData },
+ { "rank", ffInt, 5, fiRank, ftData },
+
+ { 0 }
+};
+
+cDbService::IndexDef cTableAnalyse::indices[] =
+{
+ // index fields
+
+ { "vdr_masterid", { fiVdrMasterId, na }, 0 },
+
+ { 0 }
+};
+
+//***************************************************************************
+// Snapshot
+//***************************************************************************
+
+cDbService::FieldDef cTableSnapshot::fields[] =
+{
+ // name format size index type
+
+ { "channelid", ffAscii, 50, fiChannelId, ftData },
+ { "source", ffAscii, 10, fiSource, ftData },
+
+ { "masterid", ffUInt, 0, fiVdrMasterId, ftData },
+ { "eventid", ffUInt, 0, fiEventId, ftData },
+ { "useid", ffUInt, 0, fiUseId, ftData },
+
+ { "starttime", ffInt, 10, fiStartTime, ftData },
+ { "duration", ffInt, 5, fiDuration, ftData },
+ { "title", ffAscii, 200, fiTitle, ftData },
+ { "comptitle", ffAscii, 200, fiCompTitle, ftData },
+ { "shorttext", ffAscii, 300, fiShortText, ftData },
+ { "compshorttext", ffAscii, 300, fiCompShortText, ftData },
+
+ { "updsp", ffInt, 10, fiUpdsp, ftData },
+
+ { "episode", ffAscii, 1, fiEpisode, ftData },
+ { "merge", ffInt, 0, fiMerge, ftData },
+ { "images", ffAscii, 1, fiImages, ftData },
+
+ { 0 }
+};
+
+cDbService::IndexDef cTableSnapshot::indices[] =
+{
+ // index fields
+
+ { "channelid", { fiChannelId, na }, 0 },
+ { "starttimeSource", { fiStartTime, fiSource, na }, 0 },
+
+ { 0 }
+};
+
+
+//***************************************************************************
+// Series Fields
+//***************************************************************************
+
+cDbService::FieldDef cTableSeries::fields[] =
+{
+ // name format size index type
+
+ // primary key
+ { "series_id", ffUInt, 0, fiSeriesId, ftPrimary },
+ //Data
+ { "series_name", ffAscii, 200, fiSeriesName, ftData },
+ { "series_last_scraped", ffUInt, 0, fiSeriesLastScraped, ftData },
+ { "series_last_updated", ffUInt, 0, fiSeriesLastUpdated, ftData },
+ { "series_overview", ffText, 10000, fiSeriesOverview, ftData },
+ { "series_firstaired", ffAscii, 50, fiSeriesFirstAired, ftData },
+ { "series_network", ffAscii, 100, fiSeriesNetwork, ftData },
+ { "series_imdb_id", ffAscii, 20, fiSeriesIMDBId, ftData },
+ { "series_genre", ffAscii, 100, fiSeriesGenre, ftData },
+ { "series_rating", ffFloat, 31, fiSeriesRating, ftData },
+ { "series_status", ffAscii, 50, fiSeriesStatus, ftData },
+
+ { 0 }
+};
+
+cDbService::FieldDef* cTableSeries::toField(const char* name)
+{
+ for (int i = 0; i < fiCount; i++)
+ if (strcmp(fields[i].name, name) == 0)
+ return &fields[i];
+
+ tell(0, "Request for unexpected field '%s', ignoring", name);
+
+ return 0;
+}
+
+cDbService::IndexDef cTableSeries::indices[] =
+{
+ // index fields
+
+ { 0 }
+};
+
+
+//***************************************************************************
+// SeriesEpisode Fields
+//***************************************************************************
+
+cDbService::FieldDef cTableSeriesEpisode::fields[] =
+{
+ // name format size index type
+
+ // primary key
+ { "episode_id", ffUInt, 0, fiEpisodeId, ftPrimary },
+ //Data
+ { "episode_number", ffUInt, 0, fiEpisodeNumber, ftData },
+ { "season_number", ffUInt, 0, fiSeasonNumber, ftData },
+ { "episode_name", ffAscii, 300, fiEpisodeName, ftData },
+ { "episode_overview", ffText, 10000, fiEpisodeOverview, ftData },
+ { "episode_firstaired", ffAscii, 20, fiEpisodeFirstAired, ftData },
+ { "episode_gueststars", ffAscii, 1000, fiEpisodeGuestStars, ftData },
+ { "episode_rating", ffFloat, 31, fiEpisodeRating, ftData },
+ { "episode_last_updated", ffUInt, 0, fiEpisodeLastUpdated, ftData },
+ { "series_id", ffUInt, 0, fiSeriesId, ftData },
+
+ { 0 }
+};
+
+cDbService::FieldDef* cTableSeriesEpisode::toField(const char* name)
+{
+ for (int i = 0; i < fiCount; i++)
+ if (strcmp(fields[i].name, name) == 0)
+ return &fields[i];
+
+ tell(0, "Request for unexpected field '%s', ignoring", name);
+
+ return 0;
+}
+
+cDbService::IndexDef cTableSeriesEpisode::indices[] =
+{
+ // index fields
+ { "series_id", { fiSeriesId, na }, 0 },
+
+ { 0 }
+};
+
+//***************************************************************************
+// SeriesMedia Fields
+//***************************************************************************
+
+cDbService::FieldDef cTableSeriesMedia::fields[] =
+{
+ // name format size index type
+
+ // primary key
+ { "series_id", ffUInt, 0, fiSeriesId, ftPrimary },
+ { "season_number", ffUInt, 0, fiSeasonNumber, ftPrimary },
+ { "episode_id", ffUInt, 0, fiEpisodeId, ftPrimary },
+ { "actor_id", ffUInt, 0, fiActorId, ftPrimary },
+ { "media_type", ffUInt, 0, fiMediaType, ftPrimary },
+ //Data
+ { "media_url", ffAscii, 100, fiMediaUrl, ftData },
+ { "media_width", ffUInt, 0, fiMediaWidth, ftData },
+ { "media_height", ffUInt, 0, fiMediaHeight, ftData },
+ { "media_rating", ffFloat, 31, fiMediaRating, ftData },
+ { "media_content", ffMlob, 1000000, fiMediaContent, ftData },
+
+ { 0 }
+};
+
+cDbService::FieldDef* cTableSeriesMedia::toField(const char* name)
+{
+ for (int i = 0; i < fiCount; i++)
+ if (strcmp(fields[i].name, name) == 0)
+ return &fields[i];
+
+ tell(0, "Request for unexpected field '%s', ignoring", name);
+
+ return 0;
+}
+
+cDbService::IndexDef cTableSeriesMedia::indices[] =
+{
+ // index fields
+ { "series_id", { fiSeriesId, na }, 0 },
+ { "season_number", { fiSeasonNumber, na }, 0 },
+ { "episode_id", { fiEpisodeId, na }, 0 },
+ { "actor_id", { fiActorId, na }, 0 },
+
+ { 0 }
+};
+
+//***************************************************************************
+// SeriesActor Fields
+//***************************************************************************
+
+cDbService::FieldDef cTableSeriesActor::fields[] =
+{
+ // name format size index type
+
+ // primary key
+ { "actor_id", ffUInt, 0, fiActorId, ftPrimary },
+ //Data
+ { "actor_name", ffAscii, 100, fiActorName, ftData },
+ { "actor_role", ffAscii, 500, fiActorRole, ftData },
+ { "actor_sortorder", ffUInt, 0, fiSortOrder, ftData },
+
+ { 0 }
+};
+
+cDbService::FieldDef* cTableSeriesActor::toField(const char* name)
+{
+ for (int i = 0; i < fiCount; i++)
+ if (strcmp(fields[i].name, name) == 0)
+ return &fields[i];
+
+ tell(0, "Request for unexpected field '%s', ignoring", name);
+
+ return 0;
+}
+
+cDbService::IndexDef cTableSeriesActor::indices[] =
+{
+ // index fields
+
+ { 0 }
+};
+
+//***************************************************************************
+// Movie Fields
+//***************************************************************************
+
+cDbService::FieldDef cTableMovies::fields[] =
+{
+ // name format size index type
+
+ // primary key
+ { "movie_id", ffUInt, 0, fiMovieId, ftPrimary },
+ //Data
+ { "movie_title", ffAscii, 300, fiTitle, ftData },
+ { "movie_original_title", ffAscii, 300, fiOriginalTitle, ftData },
+ { "movie_tagline", ffAscii, 1000, fiTagline, ftData },
+ { "movie_overview", ffText, 5000, fiOverview, ftData },
+ { "movie_adult", ffUInt, 0, fiIsAdult, ftData },
+ { "movie_collection_id", ffUInt, 0, fiCollectionId, ftData },
+ { "movie_collection_name", ffAscii, 300, fiCollectionName, ftData },
+ { "movie_budget", ffUInt, 0, fiBudget, ftData },
+ { "movie_revenue", ffUInt, 0, fiRevenue, ftData },
+ { "movie_genres", ffAscii, 500, fiGenres, ftData },
+ { "movie_homepage", ffAscii, 300, fiHomepage, ftData },
+ { "movie_release_date", ffAscii, 20, fiReleaaseDate, ftData },
+ { "movie_runtime", ffUInt, 0, fiRuntime, ftData },
+ { "movie_popularity", ffFloat, 31, fiPopularity, ftData },
+ { "movie_vote_average", ffFloat, 31, fiVoteAverage, ftData },
+
+ { 0 }
+};
+
+cDbService::FieldDef* cTableMovies::toField(const char* name)
+{
+ for (int i = 0; i < fiCount; i++)
+ if (strcmp(fields[i].name, name) == 0)
+ return &fields[i];
+
+ tell(0, "Request for unexpected field '%s', ignoring", name);
+
+ return 0;
+}
+
+cDbService::IndexDef cTableMovies::indices[] =
+{
+ // index fields
+ { "movie_id", { fiMovieId, na }, 0 },
+
+ { 0 }
+};
+
+//***************************************************************************
+// MovieActor Fields
+//***************************************************************************
+
+cDbService::FieldDef cTableMovieActor::fields[] =
+{
+ // name format size index type
+
+ // primary key
+ { "actor_id", ffUInt, 0, fiActorId, ftPrimary },
+ //Data
+ { "actor_name", ffAscii, 300, fiActorName, ftData },
+
+ { 0 }
+};
+
+cDbService::FieldDef* cTableMovieActor::toField(const char* name)
+{
+ for (int i = 0; i < fiCount; i++)
+ if (strcmp(fields[i].name, name) == 0)
+ return &fields[i];
+
+ tell(0, "Request for unexpected field '%s', ignoring", name);
+
+ return 0;
+}
+
+cDbService::IndexDef cTableMovieActor::indices[] =
+{
+ // index fields
+ { "actor_id", { fiActorId, na }, 0 },
+
+ { 0 }
+};
+
+//***************************************************************************
+// MovieActors Fields
+//***************************************************************************
+
+cDbService::FieldDef cTableMovieActors::fields[] =
+{
+ // name format size index type
+
+ // primary key
+ { "movie_id", ffUInt, 0, fiMovieId, ftPrimary },
+ { "actor_id", ffUInt, 0, fiActorId, ftPrimary },
+ //Data
+ { "actor_role", ffAscii, 300, fiRole, ftData },
+
+ { 0 }
+};
+
+cDbService::FieldDef* cTableMovieActors::toField(const char* name)
+{
+ for (int i = 0; i < fiCount; i++)
+ if (strcmp(fields[i].name, name) == 0)
+ return &fields[i];
+
+ tell(0, "Request for unexpected field '%s', ignoring", name);
+
+ return 0;
+}
+
+cDbService::IndexDef cTableMovieActors::indices[] =
+{
+ // index fields
+ { "movie_id", { fiMovieId, na }, 0 },
+ { "actor_id", { fiActorId, na }, 0 },
+
+ { 0 }
+};
+
+//***************************************************************************
+// cTableMovieMedia Fields
+//***************************************************************************
+
+cDbService::FieldDef cTableMovieMedia::fields[] =
+{
+ // name format size index type
+
+ // primary key
+ { "movie_id", ffUInt, 0, fiMovieId, ftPrimary },
+ { "actor_id", ffUInt, 0, fiActorId, ftPrimary },
+ { "media_type", ffUInt, 0, fiMediaType, ftPrimary },
+ //Data
+ { "media_url", ffAscii, 100, fiMediaUrl, ftData },
+ { "media_width", ffUInt, 0, fiMediaWidth, ftData },
+ { "media_height", ffUInt, 0, fiMediaHeight, ftData },
+ { "media_content", ffMlob, 1000000, fiMediaContent, ftData },
+
+ { 0 }
+};
+
+cDbService::FieldDef* cTableMovieMedia::toField(const char* name)
+{
+ for (int i = 0; i < fiCount; i++)
+ if (strcmp(fields[i].name, name) == 0)
+ return &fields[i];
+
+ tell(0, "Request for unexpected field '%s', ignoring", name);
+
+ return 0;
+}
+
+cDbService::IndexDef cTableMovieMedia::indices[] =
+{
+ // index fields
+ { "movie_id", { fiMovieId, na }, 0 },
+ { "actor_id", { fiActorId, na }, 0 },
+
+ { 0 }
+};
+
+//***************************************************************************
+// cTableRecordings Fields
+//***************************************************************************
+
+cDbService::FieldDef cTableRecordings::fields[] =
+{
+ // name format size index type
+
+ // primary key
+ { "uuid", ffAscii, 40, fiUuid, ftPrimary },
+ { "rec_path", ffAscii, 200, fiRecPath, ftPrimary },
+ { "rec_start", ffUInt, 0, fiRecStart, ftPrimary },
+
+ //Data
+ { "event_id", ffUInt, 0, fiEventId, ftData },
+ { "channel_id", ffAscii, 50, fiChannelId, ftData },
+ { "scrapinfo_movie_id", ffUInt, 0, fiScrapInfoMovieId, ftData },
+ { "scrapinfo_series_id", ffUInt, 0, fiScrapInfoSeriesId, ftData },
+ { "scrapinfo_episode_id", ffUInt, 0, fiScrapInfoEpisodeId, ftData },
+ { "scrap_new", ffUInt, 0, fiScrapNew, ftData },
+ { "rec_title", ffAscii, 200, fiRecTitle, ftData },
+ { "rec_subtitle", ffAscii, 500, fiRecSubTitle, ftData },
+ { "rec_duration", ffUInt, 0, fiRecDuration, ftData },
+ { "movie_id", ffUInt, 0, fiMovieId, ftData },
+ { "series_id", ffUInt, 0, fiSeriesId, ftData },
+ { "episode_id", ffUInt, 0, fiEpisodeId, ftData },
+
+ { 0 }
+};
+
+cDbService::FieldDef* cTableRecordings::toField(const char* name)
+{
+ for (int i = 0; i < fiCount; i++)
+ if (strcmp(fields[i].name, name) == 0)
+ return &fields[i];
+
+ tell(0, "Request for unexpected field '%s', ignoring", name);
+
+ return 0;
+}
+
+cDbService::IndexDef cTableRecordings::indices[] =
+{
+ // index fields
+ { "uuid", { fiUuid, na }, 0 },
+ { "rec_path", { fiRecPath, na }, 0 },
+ { "rec_start", { fiRecStart, na }, 0 },
+
+ { 0 }
+}; \ No newline at end of file