/* * Copyright (C) 2013 Simon Vig Therkildsen * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.simonvt.cathode.provider; import android.provider.BaseColumns; import net.simonvt.cathode.provider.DatabaseSchematic.Tables; import net.simonvt.schematic.annotation.AutoIncrement; import net.simonvt.schematic.annotation.DataType; import net.simonvt.schematic.annotation.DefaultValue; import net.simonvt.schematic.annotation.NotNull; import net.simonvt.schematic.annotation.PrimaryKey; import net.simonvt.schematic.annotation.References; import static net.simonvt.schematic.annotation.DataType.Type.INTEGER; import static net.simonvt.schematic.annotation.DataType.Type.TEXT; public final class DatabaseContract { private DatabaseContract() { } public interface LastModifiedColumns { @DataType(INTEGER) @DefaultValue("0") String LAST_MODIFIED = "lastModified"; } public interface ShowColumns extends LastModifiedColumns { @DataType(INTEGER) @PrimaryKey @AutoIncrement String ID = BaseColumns._ID; @DataType(TEXT) String TITLE = "showTitle"; @DataType(TEXT) String TITLE_NO_ARTICLE = "showTitleNoArticle"; @DataType(INTEGER) String YEAR = "year"; @DataType(INTEGER) String FIRST_AIRED = "firstAired"; @DataType(TEXT) String COUNTRY = "country"; @DataType(TEXT) String OVERVIEW = "overview"; @DataType(INTEGER) @DefaultValue("0") String RUNTIME = "runtime"; @DataType(TEXT) String NETWORK = "network"; @DataType(TEXT) String AIR_DAY = "airDay"; @DataType(TEXT) String AIR_TIME = "airTime"; @DataType(TEXT) String AIR_TIMEZONE = "airTimezone"; @DataType(TEXT) String CERTIFICATION = "certification"; @DataType(TEXT) String SLUG = "slug"; @DataType(INTEGER) String TRAKT_ID = "traktId"; @DataType(TEXT) String IMDB_ID = "imdbId"; @DataType(INTEGER) String TVDB_ID = "tvdbId"; @DataType(INTEGER) String TMDB_ID = "tmdbId"; @DataType(INTEGER) String TVRAGE_ID = "tvrageId"; @DataType(INTEGER) @DefaultValue("0") String LAST_UPDATED = "lastUpdated"; @DataType(TEXT) String TRAILER = "trailer"; @DataType(TEXT) String HOMEPAGE = "homepage"; @DataType(TEXT) String STATUS = "status"; @DataType(INTEGER) String IMAGES_LAST_SYNC = "imagesLastSync"; @DataType(TEXT) String BACKDROP = "backdrop"; @DataType(TEXT) String POSTER = "poster"; @DataType(INTEGER) @DefaultValue("0") String USER_RATING = "userRating"; @DataType(INTEGER) @DefaultValue("0") String RATED_AT = "ratedAt"; @DataType(INTEGER) @DefaultValue("0") String RATING = "rating"; @DataType(INTEGER) @DefaultValue("0") String VOTES = "votes"; @DataType(INTEGER) @DefaultValue("0") String WATCHERS = "watchers"; @DataType(INTEGER) @DefaultValue("0") String PLAYS = "plays"; @DataType(INTEGER) @DefaultValue("0") String SCROBBLES = "scrobbles"; @DataType(INTEGER) @DefaultValue("0") String CHECKINS = "checkins"; @DataType(INTEGER) @DefaultValue("0") String IN_WATCHLIST = "showInWatchlist"; @DataType(INTEGER) @DefaultValue("0") String LISTED_AT = "watchlistListedAt"; @DataType(INTEGER) @DefaultValue("0") String LAST_WATCHED_AT = "lastWatchedAt"; @DataType(INTEGER) @DefaultValue("0") String LAST_COLLECTED_AT = "lastCollectedAt"; @DataType(INTEGER) @DefaultValue("0") String HIDDEN_CALENDAR = "hiddenCalendar"; @DataType(INTEGER) @DefaultValue("0") String HIDDEN_WATCHED = "hiddenWatched"; @DataType(INTEGER) @DefaultValue("0") String HIDDEN_COLLECTED = "hiddenCollected"; @DataType(INTEGER) @DefaultValue("0") String HIDDEN_RECOMMENDATIONS = "hiddenRecommendations"; @DataType(INTEGER) @DefaultValue("0") String WATCHED_COUNT = "watchedCount"; @DataType(INTEGER) @DefaultValue("0") String AIRDATE_COUNT = "airdateCount"; @DataType(INTEGER) @DefaultValue("0") String IN_COLLECTION_COUNT = "inCollectionCount"; @DataType(INTEGER) @DefaultValue("0") String IN_WATCHLIST_COUNT = "inWatchlistCount"; @DataType(INTEGER) @DefaultValue("-1") String TRENDING_INDEX = "trendingIndex"; @DataType(INTEGER) @DefaultValue("-1") String RECOMMENDATION_INDEX = "recommendationIndex"; @DataType(INTEGER) @DefaultValue("-1") String ANTICIPATED_INDEX = "anticipatedIndex"; @DataType(INTEGER) @DefaultValue("0") String FULL_SYNC_REQUESTED = "fullSyncRequested"; @DataType(INTEGER) @DefaultValue("0") String NEEDS_SYNC = "needsSync"; @DataType(INTEGER) @DefaultValue("0") String LAST_SYNC = "lastSync"; @DataType(INTEGER) @DefaultValue("0") String LAST_COMMENT_SYNC = "lastCommentSync"; @DataType(INTEGER) @DefaultValue("0") String LAST_CREDITS_SYNC = "lastCreditsSync"; @DataType(INTEGER) @DefaultValue("0") String LAST_RELATED_SYNC = "lastRelatedSync"; @DataType(INTEGER) @DefaultValue("0") String WATCHING = "watchingShow"; // Don't create a columns in database String AIRED_COUNT = "airedCount"; String UNAIRED_COUNT = "unairedCount"; String EPISODE_COUNT = "episodeCount"; String WATCHING_EPISODE_ID = "watchingEpisodeId"; } public interface ShowGenreColumns { @DataType(INTEGER) @PrimaryKey @AutoIncrement String ID = BaseColumns._ID; @DataType(INTEGER) @References(table = Tables.SHOWS, column = ShowColumns.ID) String SHOW_ID = "showId"; @DataType(TEXT) String GENRE = "genre"; } public interface ShowCastColumns { @DataType(INTEGER) @PrimaryKey @AutoIncrement String ID = BaseColumns._ID; @DataType(INTEGER) @References(table = Tables.SHOWS, column = ShowColumns.ID) String SHOW_ID = "showId"; @DataType(TEXT) String CHARACTER = "character"; @DataType(TEXT) @References(table = Tables.PEOPLE, column = PersonColumns.ID) String PERSON_ID = "personId"; } public interface ShowCrewColumns { @DataType(INTEGER) @PrimaryKey @AutoIncrement String ID = BaseColumns._ID; @DataType(INTEGER) @References(table = Tables.SHOWS, column = ShowColumns.ID) String SHOW_ID = "showId"; @DataType(TEXT) String CATEGORY = "category"; @DataType(TEXT) String JOB = "job"; @DataType(TEXT) @References(table = Tables.PEOPLE, column = PersonColumns.ID) String PERSON_ID = "personId"; } public interface SeasonColumns extends LastModifiedColumns { @DataType(INTEGER) @PrimaryKey @AutoIncrement String ID = BaseColumns._ID; @DataType(INTEGER) @References(table = Tables.SHOWS, column = ShowColumns.ID) String SHOW_ID = "showId"; @DataType(INTEGER) @NotNull String SEASON = "season"; @DataType(INTEGER) String TVDB_ID = "tvdbId"; @DataType(INTEGER) String TMDB_ID = "tmdbId"; @DataType(INTEGER) String TVRAGE_ID = "tvrageId"; @DataType(INTEGER) @DefaultValue("0") String USER_RATING = "userRating"; @DataType(INTEGER) @DefaultValue("0") String RATED_AT = "ratedAt"; @DataType(INTEGER) @DefaultValue("0") String RATING = "rating"; @DataType(INTEGER) @DefaultValue("0") String VOTES = "votes"; @DataType(INTEGER) @DefaultValue("0") String HIDDEN_WATCHED = "hiddenWatched"; @DataType(INTEGER) @DefaultValue("0") String HIDDEN_COLLECTED = "hiddenCollected"; @DataType(INTEGER) @DefaultValue("0") String WATCHED_COUNT = "watchedCount"; @DataType(INTEGER) @DefaultValue("0") String AIRDATE_COUNT = "airdateCount"; @DataType(INTEGER) @DefaultValue("0") String IN_COLLECTION_COUNT = "inCollectionCount"; @DataType(INTEGER) @DefaultValue("0") String IN_WATCHLIST_COUNT = "inWatchlistCount"; @DataType(INTEGER) @DefaultValue("0") String NEEDS_SYNC = "needsSync"; String AIRED_COUNT = "airedCount"; String UNAIRED_COUNT = "unairedCount"; String WATCHED_AIRED_COUNT = "watchedAiredCount"; String COLLECTED_AIRED_COUNT = "collectedAiredCount"; String EPISODE_COUNT = "episodeCount"; } public interface EpisodeColumns extends LastModifiedColumns { @DataType(INTEGER) @PrimaryKey @AutoIncrement String ID = BaseColumns._ID; @DataType(INTEGER) @References(table = Tables.SHOWS, column = ShowColumns.ID) String SHOW_ID = "showId"; @DataType(INTEGER) @References(table = Tables.SEASONS, column = SeasonColumns.ID) String SEASON_ID = "seasonId"; @DataType(INTEGER) String SEASON = "season"; @DataType(INTEGER) String EPISODE = "episode"; @DataType(INTEGER) String NUMBER_ABS = "numberAbs"; @DataType(TEXT) String TITLE = "episodeTitle"; @DataType(TEXT) String OVERVIEW = "overview"; @DataType(INTEGER) String TRAKT_ID = "traktId"; @DataType(TEXT) String IMDB_ID = "imdbId"; @DataType(INTEGER) String TVDB_ID = "tvdbId"; @DataType(INTEGER) String TMDB_ID = "tmdbId"; @DataType(INTEGER) String TVRAGE_ID = "tvrageId"; @DataType(INTEGER) String IMAGES_LAST_SYNC = "imagesLastSync"; @DataType(TEXT) String SCREENSHOT = "screenshot"; @DataType(INTEGER) String FIRST_AIRED = "episodeFirstAired"; @DataType(INTEGER) String UPDATED_AT = "updatedAt"; @DataType(INTEGER) @DefaultValue("0") String USER_RATING = "userRating"; @DataType(INTEGER) @DefaultValue("0") String RATED_AT = "ratedAt"; @DataType(INTEGER) @DefaultValue("0") String RATING = "rating"; @DataType(INTEGER) @DefaultValue("0") String VOTES = "votes"; @DataType(INTEGER) @DefaultValue("0") String PLAYS = "plays"; @DataType(INTEGER) @DefaultValue("0") String WATCHED = "watched"; @DataType(INTEGER) @DefaultValue("0") String IN_WATCHLIST = "inWatchlist"; @DataType(INTEGER) @DefaultValue("0") String IN_COLLECTION = "inCollection"; @DataType(INTEGER) @DefaultValue("0") String COLLECTED_AT = "collectedAt"; @DataType(INTEGER) @DefaultValue("0") String LISTED_AT = "listedAt"; @DataType(INTEGER) @DefaultValue("0") String WATCHING = "watching"; @DataType(INTEGER) @DefaultValue("0") String CHECKED_IN = "checkedIn"; @DataType(INTEGER) @DefaultValue("0") String STARTED_AT = "startedAt"; @DataType(INTEGER) @DefaultValue("0") String EXPIRES_AT = "expiresAt"; @DataType(INTEGER) @DefaultValue("0") String LAST_COMMENT_SYNC = "lastCommentSync"; @DataType(INTEGER) @DefaultValue("0") String NOTIFICATION_DISMISSED = "notificationDismissed"; @DataType(INTEGER) @DefaultValue("0") String NEEDS_SYNC = "needsSync"; String SHOW_TITLE = "episodeShowTitle"; } public interface MovieColumns extends LastModifiedColumns { @DataType(INTEGER) @PrimaryKey @AutoIncrement String ID = BaseColumns._ID; @DataType(TEXT) String TITLE = "title"; @DataType(TEXT) String TITLE_NO_ARTICLE = "titleNoArticle"; @DataType(INTEGER) String YEAR = "year"; @DataType(INTEGER) String RELEASED = "released"; @DataType(TEXT) String TRAILER = "trailer"; @DataType(INTEGER) String RUNTIME = "runtime"; @DataType(TEXT) String TAGLINE = "tagline"; @DataType(TEXT) String OVERVIEW = "overview"; @DataType(TEXT) String CERTIFICATION = "certification"; @DataType(TEXT) String LANGUAGE = "language"; @DataType(TEXT) String HOMEPAGE = "homepage"; @DataType(INTEGER) String TRAKT_ID = "traktId"; @DataType(TEXT) String SLUG = "slug"; @DataType(TEXT) String IMDB_ID = "imdbId"; @DataType(INTEGER) String TMDB_ID = "tmdbId"; @DataType(INTEGER) String IMAGES_LAST_SYNC = "imagesLastSync"; @DataType(TEXT) String BACKDROP = "backdrop"; @DataType(TEXT) String POSTER = "poster"; @DataType(INTEGER) @DefaultValue("0") String USER_RATING = "userRating"; @DataType(INTEGER) @DefaultValue("0") String RATED_AT = "ratedAt"; @DataType(INTEGER) @DefaultValue("0") String RATING = "rating"; @DataType(INTEGER) @DefaultValue("0") String VOTES = "votes"; @DataType(INTEGER) @DefaultValue("0") String WATCHED = "watched"; @DataType(INTEGER) @DefaultValue("0") String IN_COLLECTION = "inCollection"; @DataType(INTEGER) @DefaultValue("0") String IN_WATCHLIST = "inWatchlist"; @DataType(INTEGER) @DefaultValue("0") String WATCHED_AT = "watchedAt"; @DataType(INTEGER) @DefaultValue("0") String COLLECTED_AT = "collectedAt"; @DataType(INTEGER) @DefaultValue("0") String LISTED_AT = "watchlistListedAt"; @DataType(INTEGER) @DefaultValue("0") String HIDDEN_CALENDAR = "hiddenCalendar"; @DataType(INTEGER) @DefaultValue("0") String HIDDEN_RECOMMENDATIONS = "hiddenRecommendations"; @DataType(INTEGER) @DefaultValue("0") String LAST_UPDATED = "lastUpdated"; @DataType(INTEGER) @DefaultValue("0") String TRENDING_INDEX = "trendingIndex"; @DataType(INTEGER) @DefaultValue("0") String RECOMMENDATION_INDEX = "recommendationIndex"; @DataType(INTEGER) @DefaultValue("-1") String ANTICIPATED_INDEX = "anticipatedIndex"; @DataType(INTEGER) @DefaultValue("0") String WATCHING = "watching"; @DataType(INTEGER) @DefaultValue("0") String CHECKED_IN = "checkedIn"; @DataType(INTEGER) @DefaultValue("0") String STARTED_AT = "startedAt"; @DataType(INTEGER) @DefaultValue("0") String EXPIRES_AT = "expiresAt"; @DataType(INTEGER) @DefaultValue("0") String NEEDS_SYNC = "needsSync"; @DataType(INTEGER) @DefaultValue("0") String LAST_SYNC = "lastSync"; @DataType(INTEGER) @DefaultValue("0") String LAST_COMMENT_SYNC = "lastCommentSync"; @DataType(INTEGER) @DefaultValue("0") String LAST_CREDITS_SYNC = "lastCreditsSync"; @DataType(INTEGER) @DefaultValue("0") String LAST_RELATED_SYNC = "lastRelatedSync"; } public interface MovieGenreColumns { @DataType(INTEGER) @PrimaryKey @AutoIncrement String ID = BaseColumns._ID; @DataType(INTEGER) @References(table = Tables.MOVIES, column = MovieColumns.ID) String MOVIE_ID = "movieId"; @DataType(TEXT) String GENRE = "genre"; } public interface MovieCastColumns { @DataType(INTEGER) @PrimaryKey @AutoIncrement String ID = BaseColumns._ID; @DataType(INTEGER) @References(table = Tables.MOVIES, column = MovieColumns.ID) String MOVIE_ID = "movieId"; @DataType(TEXT) String CHARACTER = "character"; @DataType(TEXT) @References(table = Tables.PEOPLE, column = PersonColumns.ID) String PERSON_ID = "personId"; } public interface MovieCrewColumns { @DataType(INTEGER) @PrimaryKey @AutoIncrement String ID = BaseColumns._ID; @DataType(INTEGER) @References(table = Tables.MOVIES, column = MovieColumns.ID) String MOVIE_ID = "movieId"; @DataType(TEXT) String CATEGORY = "category"; @DataType(TEXT) String JOB = "job"; @DataType(TEXT) @References(table = Tables.PEOPLE, column = PersonColumns.ID) String PERSON_ID = "personId"; } public interface PersonColumns extends LastModifiedColumns { @DataType(INTEGER) @PrimaryKey @AutoIncrement String ID = BaseColumns._ID; @DataType(TEXT) String NAME = "name"; @DataType(INTEGER) String TRAKT_ID = "traktId"; @DataType(INTEGER) String SLUG = "slug"; @DataType(INTEGER) String IMDB_ID = "imdbId"; @DataType(INTEGER) String TMDB_ID = "tmdbId"; @DataType(INTEGER) String TVRAGE_ID = "tvrageId"; @DataType(INTEGER) String IMAGES_LAST_SYNC = "imagesLastSync"; @DataType(TEXT) String HEADSHOT = "headshot"; @DataType(TEXT) String SCREENSHOT = "screenshot"; @DataType(TEXT) String BIOGRAPHY = "biography"; @DataType(TEXT) String BIRTHDAY = "birthday"; @DataType(TEXT) String DEATH = "death"; @DataType(TEXT) String BIRTHPLACE = "birthplace"; @DataType(TEXT) String HOMEPAGE = "homepage"; @DataType(INTEGER) @DefaultValue("0") String LAST_SYNC = "lastSync"; @DataType(INTEGER) String NEEDS_SYNC = "needsSync"; } public interface RecentQueriesColumns { @DataType(INTEGER) @PrimaryKey @AutoIncrement String ID = BaseColumns._ID; @DataType(TEXT) @NotNull String QUERY = "query"; @DataType(INTEGER) @NotNull String QUERIED_AT = "queriedAt"; } public interface ListsColumns extends LastModifiedColumns { @DataType(INTEGER) @PrimaryKey @AutoIncrement String ID = BaseColumns._ID; @DataType(TEXT) String NAME = "name"; @DataType(TEXT) String DESCRIPTION = "description"; @DataType(TEXT) String PRIVACY = "privacy"; @DataType(INTEGER) String DISPLAY_NUMBERS = "displayNumbers"; @DataType(INTEGER) String ALLOW_COMMENTS = "allowComments"; @DataType(INTEGER) String UPDATED_AT = "updatedAt"; @DataType(INTEGER) String LIKES = "likes"; @DataType(TEXT) String SLUG = "slug"; @DataType(INTEGER) String TRAKT_ID = "traktId"; } public interface ListItemColumns extends LastModifiedColumns { @DataType(INTEGER) @PrimaryKey @AutoIncrement String ID = BaseColumns._ID; @DataType(INTEGER) @References(table = Tables.LISTS, column = ListsColumns.ID) String LIST_ID = "listId"; @DataType(INTEGER) String LISTED_AT = "listedAt"; @DataType(INTEGER) String ITEM_ID = "itemId"; @DataType(INTEGER) String ITEM_TYPE = "itemType"; String TITLE = "title"; String OVERVIEW = "overview"; } public interface ItemType { int SHOW = 1; int SEASON = 2; int EPISODE = 3; int MOVIE = 4; int PERSON = 5; int LIST = 6; } public interface UserColumns { @DataType(INTEGER) @PrimaryKey @AutoIncrement String ID = BaseColumns._ID; @DataType(TEXT) String USERNAME = "username"; @DataType(INTEGER) String IS_PRIVATE = "isPrivate"; @DataType(TEXT) String NAME = "name"; @DataType(INTEGER) String VIP = "vip"; @DataType(INTEGER) String VIP_EP = "vipEp"; @DataType(INTEGER) String JOINED_AT = "joinedAt"; @DataType(TEXT) String LOCATION = "location"; @DataType(TEXT) String ABOUT = "about"; @DataType(TEXT) String GENDER = "gender"; @DataType(INTEGER) String AGE = "age"; @DataType(TEXT) String AVATAR = "avatar"; } public interface CommentColumns extends LastModifiedColumns { @DataType(INTEGER) @PrimaryKey String ID = BaseColumns._ID; @DataType(TEXT) @NotNull String COMMENT = "comment"; @DataType(INTEGER) @DefaultValue("0") String SPOILER = "spoiler"; @DataType(INTEGER) @DefaultValue("0") String REVIEW = "review"; @DataType(INTEGER) @DefaultValue("0") String PARENT_ID = "parentId"; @DataType(INTEGER) @DefaultValue("0") String CREATED_AT = "createdAt"; @DataType(INTEGER) @DefaultValue("0") String REPLIES = "replies"; @DataType(INTEGER) @DefaultValue("0") String LIKES = "likes"; @DataType(INTEGER) @DefaultValue("0") String USER_RATING = "userRating"; @DataType(INTEGER) String ITEM_ID = "itemId"; @DataType(INTEGER) String ITEM_TYPE = "itemType"; @DataType(INTEGER) @References(table = Tables.USERS, column = UserColumns.ID) String USER_ID = "userId"; @DataType(INTEGER) @DefaultValue("0") String IS_USER_COMMENT = "isUserComment"; @DataType(INTEGER) @DefaultValue("0") String LIKED = "liked"; @DataType(INTEGER) @DefaultValue("0") String LIKED_AT = "likedAt"; } public interface RelatedShowsColumns { @DataType(INTEGER) @PrimaryKey @AutoIncrement String ID = BaseColumns._ID; @DataType(INTEGER) @References(table = Tables.SHOWS, column = ShowColumns.ID) String SHOW_ID = "showId"; @DataType(INTEGER) @References(table = Tables.SHOWS, column = ShowColumns.ID) String RELATED_SHOW_ID = "relatedShowId"; @DataType(INTEGER) String RELATED_INDEX = "relatedIndex"; } public interface RelatedMoviesColumns { @DataType(INTEGER) @PrimaryKey @AutoIncrement String ID = BaseColumns._ID; @DataType(INTEGER) @References(table = Tables.MOVIES, column = MovieColumns.ID) String MOVIE_ID = "movieId"; @DataType(INTEGER) @References(table = Tables.MOVIES, column = MovieColumns.ID) String RELATED_MOVIE_ID = "relatedMovieId"; @DataType(INTEGER) String RELATED_INDEX = "relatedIndex"; } }