Пример #1
0
 public async Task RemoveLocationFromVideo(long locationId, long videoId)
 {
     using (var db = DataAccessUtil.CreateSqlConnection()) {
         db.Open();
         var command = new SqliteCommand($"DELETE FROM video_location WHERE video_id = {videoId} AND location_id = {locationId}", db);
         command.ExecuteNonQuery();
     }
 }
Пример #2
0
 public async Task PermanentlyRemoveVideo(long videoId)
 {
     using (var db = DataAccessUtil.CreateSqlConnection()) {
         db.Open();
         var command = new SqliteCommand($"DELETE FROM video WHERE video_id = {videoId}", db);
         command.ExecuteNonQuery();
     }
 }
Пример #3
0
 public async Task UpdateVideo(Video video)
 {
     using (var db = DataAccessUtil.CreateSqlConnection()) {
         db.Open();
         var command = GetUpdateVideoCommand(db, video, "video_id", video.VideoId);
         command.ExecuteNonQuery();
     }
 }
Пример #4
0
 private void UpdateDeletedStatus(long videoId, bool deleted)
 {
     using (var db = DataAccessUtil.CreateSqlConnection()) {
         db.Open();
         var command = new SqliteCommand($"UPDATE video SET deleted = {deleted}, deletion_due_to_cascade = false WHERE video_id = {videoId}", db);
         command.ExecuteNonQuery();
     }
 }
Пример #5
0
        private async Task UpdateDeletedStatus(long locationId, bool deleted)
        {
            using (var db = DataAccessUtil.CreateSqlConnection()) {
                db.Open();

                var tagCommand = new SqliteCommand($"UPDATE location SET deleted = {deleted}, deletion_due_to_cascade = false WHERE location_id = {locationId}", db);
                tagCommand.ExecuteNonQuery();
            }
        }
Пример #6
0
 public async Task PermanentlyRemoveLocation(Location location)
 {
     using (var db = DataAccessUtil.CreateSqlConnection()) {
         db.Open();
         var tagCommand = new SqliteCommand($"DELETE FROM location WHERE location_id = @LocationId", db);
         tagCommand.Parameters.AddWithValue("@LocationId", location.LocationId);
         tagCommand.ExecuteNonQuery();
     }
 }
Пример #7
0
        public async Task <PaginationResult <Library> > GetLibraries(Pagination pagination, string nameFilter, bool deleted = false)
        {
            var query = $"{SELECT_BASE} WHERE deleted = {deleted} AND name LIKE @NameFilter";
            Action <SqliteCommand> parameterize = (command) => {
                command.Parameters.AddWithValue("@NameFilter", $"%{nameFilter}%");
            };

            return(await DataAccessUtil.GetPaginatedResult(pagination, query, parameterize, ParseLibrary));
        }
Пример #8
0
        public void UpdateLibrary(Library library)
        {
            using (var db = DataAccessUtil.CreateSqlConnection()) {
                db.Open();

                var command = GetUpdateLibraryCommand(db, library);
                command.ExecuteNonQuery();
            }
        }
Пример #9
0
        public void PermanentlyDeleteLibrary(long libraryId)
        {
            using (var db = DataAccessUtil.CreateSqlConnection()) {
                db.Open();

                var deleteTableCommand = new SqliteCommand($"DELETE FROM library WHERE library_id = {libraryId}", db);
                deleteTableCommand.ExecuteNonQuery();
            }
        }
Пример #10
0
        private void SetLibraryDeletedStatus(long libraryId, bool deleted)
        {
            using (var db = DataAccessUtil.CreateSqlConnection()) {
                db.Open();

                var deleteTableCommand = new SqliteCommand($"UPDATE library SET deleted = {deleted} WHERE library_id = {libraryId}", db);
                deleteTableCommand.ExecuteNonQuery();
            }
        }
Пример #11
0
 private void PermanentlyRemoveTag(Tag tag)
 {
     using (var db = DataAccessUtil.CreateSqlConnection()) {
         db.Open();
         var tagCommand = new SqliteCommand($"DELETE FROM tag WHERE tag_id = @TagId", db);
         tagCommand.Parameters.AddWithValue("@TagId", tag.TagId);
         tagCommand.ExecuteNonQuery();
     }
 }
Пример #12
0
        public async Task <PaginationResult <Character> > GetVideoCreatorsNotInVideo(Pagination pagination, long videoId, long libraryId, string nameFilter)
        {
            var query = $"SELECT {SELECT_BASE_COLUMNS_STRING} FROM character c WHERE c.deleted = false AND c.creator = true AND c.name LIKE @NameFilter AND c.library_id = {libraryId} AND c.character_id NOT IN (SELECT vc.creator_id FROM video_creator vc WHERE vc.video_id = {videoId})";
            Action <SqliteCommand> parameterize = (command) => {
                command.Parameters.AddWithValue("@NameFilter", "%" + nameFilter + "%");
            };

            return(await DataAccessUtil.GetPaginatedResult(pagination, query, parameterize, ParseCharacter));
        }
Пример #13
0
        public void UpdateMediaFile(MediaFile file)
        {
            using (var db = DataAccessUtil.CreateSqlConnection()) {
                db.Open();

                var command = GetUpdateMediaFileCommand(db, file, "media_id", file.MediaId);
                command.ExecuteNonQuery();
            }
        }
Пример #14
0
        private void UpsertTags(List <Tag> tags, string tableName)
        {
            if (tags.Count == 0)
            {
                return;
            }

            using (var db = DataAccessUtil.CreateSqlConnection()) {
                db.Open();

                using (var txn = db.BeginTransaction()) {
                    var updateTagCommand = new SqliteCommand("UPDATE tag SET type = @Type, name = @Name WHERE unique_id = @UniqueId", db, txn);
                    updateTagCommand.Parameters.AddWithValue("@Name", "");
                    updateTagCommand.Parameters.AddWithValue("@Type", "");
                    updateTagCommand.Parameters.AddWithValue("@UniqueId", "");

                    // TODO: library id
                    var insertTagCommand = new SqliteCommand("INSERT OR IGNORE INTO tag(name, type, deleted, unique_id) VALUES (@Name, @Type, false, @UniqueId)", db, txn);
                    insertTagCommand.Parameters.AddWithValue("@Name", "");
                    insertTagCommand.Parameters.AddWithValue("@Type", "");
                    insertTagCommand.Parameters.AddWithValue("@UniqueId", "");

                    var selectTagCommand = new SqliteCommand("SELECT tag_id FROM tag WHERE unique_id = @UniqueId", db, txn);
                    selectTagCommand.Parameters.AddWithValue("@UniqueId", "");

                    var insertIntoOtherTableCommand = new SqliteCommand($"INSERT OR IGNORE INTO {tableName}(tag_id) VALUES (@TagId)", db, txn);
                    insertIntoOtherTableCommand.Parameters.AddWithValue("@TagId", 0);

                    foreach (var tag in tags)
                    {
                        if (tag.Name == null || tag.Type == null || tag.UniqueId == null)
                        {
                            continue;
                        }

                        updateTagCommand.Parameters["@Name"].Value     = tag.Name;
                        updateTagCommand.Parameters["@Type"].Value     = tag.Type;
                        updateTagCommand.Parameters["@UniqueId"].Value = tag.UniqueId;
                        updateTagCommand.ExecuteNonQuery();

                        // TODO: library id
                        insertTagCommand.Parameters["@Name"].Value     = tag.Name;
                        insertTagCommand.Parameters["@Type"].Value     = tag.Type;
                        insertTagCommand.Parameters["@UniqueId"].Value = tag.UniqueId;
                        insertTagCommand.ExecuteNonQuery();

                        selectTagCommand.Parameters["@UniqueId"].Value = tag.UniqueId;
                        var tagId = (long)selectTagCommand.ExecuteScalar();

                        insertIntoOtherTableCommand.Parameters["@TagId"].Value = tagId;
                        insertIntoOtherTableCommand.ExecuteNonQuery();
                    }

                    txn.Commit();
                }
            }
        }
Пример #15
0
        public void UpdateCharacter(Character character)
        {
            using (var db = DataAccessUtil.CreateSqlConnection()) {
                db.Open();

                var command = GetUpdateCharacterCommand(db, character, "character_id", character.CharacterId);
                command.ExecuteNonQuery();
            }
        }
Пример #16
0
 public void UpdateCharacterInVideo(CreatorOfVideoFullDto dto, long characterId)
 {
     using (var db = DataAccessUtil.CreateSqlConnection()) {
         db.Open();
         var clearCommand = new SqliteCommand($"UPDATE actor_for_video_character SET video_id = {dto.Video.VideoId}, character_id = {characterId}, creator_id = @ActorId WHERE video_id = {dto.Video.VideoId} AND character_id = {characterId}", db);
         clearCommand.Parameters.AddWithValue("@ActorId", QueryUtil.GetNullableIdForStorage(dto.ActorId));
         clearCommand.ExecuteNonQuery();
     }
 }
Пример #17
0
        public async Task <PaginationResult <Video> > GetVideosCharacterIsNotIn(Pagination pagination, long libraryId, long characterId, string titleFilter)
        {
            var query = $"SELECT {SELECT_BASE_COLUMNS_STRING} FROM video v WHERE v.library_id = {libraryId} AND v.deleted = false AND v.title LIKE @TitleFilter AND v.video_id NOT IN (SELECT av.video_id FROM actor_for_video_character av WHERE av.character_id = {characterId})";
            Action <SqliteCommand> parameterize = (SqliteCommand command) => {
                command.Parameters.AddWithValue("@TitleFilter", "%" + titleFilter + "%");
            };

            return(await DataAccessUtil.GetPaginatedResult(pagination, query, parameterize, ParseVideo));
        }
Пример #18
0
        private async Task <PaginationResult <Series> > GetSeriesInLibrary(Pagination pagination, bool deleted, long libraryId, string nameFilter)
        {
            var query = $"{SELECT_BASE} WHERE library_id = {libraryId} AND deleted = {deleted} AND name LIKE @NameFilter";
            Action <SqliteCommand> parameterize = (command) => {
                command.Parameters.AddWithValue("@NameFilter", $"%{nameFilter}%");
            };

            return(await DataAccessUtil.GetPaginatedResult(pagination, query, parameterize, ParseSeries));
        }
Пример #19
0
        private async Task <PaginationResult <MediaFile> > GetFilesNotOnEntity(Pagination pagination, long videoId, string nameFilter, string tableName, string entityIdColumn)
        {
            var query = $"{SELECT_BASE} WHERE name LIKE @NameFilter AND media_id NOT IN (SELECT media_id FROM {tableName} WHERE {entityIdColumn} = {videoId})";
            Action <SqliteCommand> parameterize = (command) => {
                command.Parameters.AddWithValue("@NameFilter", $"%{nameFilter}%");
            };

            return(await DataAccessUtil.GetPaginatedResult(pagination, query, parameterize, ParseMediaFile));
        }
Пример #20
0
        public async Task RemoveCharacterFromVideo(long characterId, long videoId)
        {
            using (var db = DataAccessUtil.CreateSqlConnection()) {
                db.Open();

                var command = new SqliteCommand($"DELETE FROM actor_for_video_character WHERE character_id = {characterId} AND video_id = {videoId}", db);
                command.ExecuteReader();
            }
        }
Пример #21
0
 private void SetTagDeletedStatus(Tag tag, bool deleted)
 {
     using (var db = DataAccessUtil.CreateSqlConnection()) {
         db.Open();
         var tagCommand = new SqliteCommand($"UPDATE tag SET deleted = {deleted} WHERE tag_id = @TagId", db);
         tagCommand.Parameters.AddWithValue("@TagId", tag.TagId);
         tagCommand.ExecuteNonQuery();
     }
 }
Пример #22
0
        public void UpdateLibrarySettings(long libraryId, LibrarySettings settings)
        {
            using (var db = DataAccessUtil.CreateSqlConnection()) {
                db.Open();

                using (var txn = db.BeginTransaction()) {
                    var command = new SqliteCommand($"UPDATE library_setting SET value = @Value WHERE library_id = {libraryId} AND name = @Key", db, txn);

                    command.Parameters.AddWithValue("@Key", nameof(settings.PublisherLabel));
                    command.Parameters.AddWithValue("@Value", settings.PublisherLabel);
                    command.ExecuteNonQuery();

                    command.Parameters["@Key"].Value   = nameof(settings.SeriesLabel);
                    command.Parameters["@Value"].Value = settings.SeriesLabel;
                    command.ExecuteNonQuery();

                    command.Parameters["@Key"].Value   = nameof(settings.CharacterLabel);
                    command.Parameters["@Value"].Value = settings.CharacterLabel;
                    command.ExecuteNonQuery();

                    command.Parameters["@Key"].Value   = nameof(settings.VideoLabel);
                    command.Parameters["@Value"].Value = settings.VideoLabel;
                    command.ExecuteNonQuery();

                    command.Parameters["@Key"].Value   = nameof(settings.VideoPreviewDateFormat);
                    command.Parameters["@Value"].Value = settings.VideoPreviewDateFormat;
                    command.ExecuteNonQuery();

                    command.Parameters["@Key"].Value   = nameof(settings.ShowCharacters);
                    command.Parameters["@Value"].Value = settings.ShowCharacters.ToString();
                    command.ExecuteNonQuery();

                    command.Parameters["@Key"].Value   = nameof(settings.ShowCreators);
                    command.Parameters["@Value"].Value = settings.ShowCreators.ToString();
                    command.ExecuteNonQuery();

                    command.Parameters["@Key"].Value   = nameof(settings.ShowLocations);
                    command.Parameters["@Value"].Value = settings.ShowLocations.ToString();
                    command.ExecuteNonQuery();

                    command.Parameters["@Key"].Value   = nameof(settings.ShowPublishers);
                    command.Parameters["@Value"].Value = settings.ShowPublishers.ToString();
                    command.ExecuteNonQuery();

                    command.Parameters["@Key"].Value   = nameof(settings.ShowSeries);
                    command.Parameters["@Value"].Value = settings.ShowSeries.ToString();
                    command.ExecuteNonQuery();

                    command.Parameters["@Key"].Value   = nameof(settings.ShowVideos);
                    command.Parameters["@Value"].Value = settings.ShowVideos.ToString();
                    command.ExecuteNonQuery();

                    txn.Commit();
                }
            }
        }
Пример #23
0
        private async Task <PaginationResult <PlaylistDto> > GetPlaylists(Pagination pagination, bool deleted, long parentId = DatabaseConstants.DEFAULT_ID, string nameFilter = "")
        {
            var parentClause = parentId == DatabaseConstants.DEFAULT_ID ? $"p.{GetParentColumnName()} IS NULL AND" : $"p.{GetParentColumnName()} = {parentId} AND";
            var query        = $"{SELECT_BASE} WHERE {parentClause} vs.sequence_id = p.sequence_id AND deleted = {deleted} AND vs.title LIKE @NameFilter";
            Action <SqliteCommand> parameterize = (command) => {
                command.Parameters.AddWithValue("@NameFilter", $"%{nameFilter}%");
            };

            return(await DataAccessUtil.GetPaginatedResult(pagination, query, parameterize, ParsePlaylist));
        }
Пример #24
0
        private async Task <PaginationResult <Character> > GetCharacters(Pagination pagination, bool deleted, bool creator, long libraryId = DatabaseConstants.DEFAULT_ID, string nameFilter = "")
        {
            var libraryClause = libraryId == DatabaseConstants.DEFAULT_ID ? "" : $"c.library_id = {libraryId} AND";
            var query         = $"{SELECT_BASE} WHERE {libraryClause} c.deleted = {deleted} AND c.creator = {creator} AND c.name LIKE @NameFilter";
            Action <SqliteCommand> parameterize = (command) => {
                command.Parameters.AddWithValue("@NameFilter", "%" + nameFilter + "%");
            };

            return(await DataAccessUtil.GetPaginatedResult(pagination, query, parameterize, ParseCharacter));
        }
Пример #25
0
 public void AddCharactersInVideo(long videoId, List <ActorForCharacterFullDto> characters)
 {
     using (var db = DataAccessUtil.CreateSqlConnection()) {
         db.Open();
         using (var txn = db.BeginTransaction()) {
             InsertCharacterInVideoDetails(videoId, characters, db, txn);
             txn.Commit();
         }
     }
 }
Пример #26
0
        public override async Task <TResult> ReadFromApplicationPackage <TResult>(string filePath)
        {
            var documentPath = NSFileManager.DefaultManager.GetUrls(NSSearchPathDirectory.ApplicationDirectory, NSSearchPathDomain.User)[0].Path;
            var fullFilePath = Path.Combine(documentPath, filePath);
            await Task.Delay(1);

            var content = File.ReadAllText(fullFilePath);

            return(DataAccessUtil.DeserializeObject <TResult>(content));
        }
Пример #27
0
        public long CreateSeries(CreateSeriesDto dto)
        {
            using (var db = DataAccessUtil.CreateSqlConnection()) {
                db.Open();
                var command = GetCreateSeriesCommand(db, dto, UniqueIdUtil.GenerateUniqueId(), false);
                command.ExecuteNonQuery();

                return(QueryUtil.GetLastInsertedPrimaryKey(db));
            }
        }
Пример #28
0
        public async Task <PaginationResult <Video> > GetVideosToWatchInLibrary(long libraryId, Pagination pagination, string nameFilter)
        {
            var query = $"{SELECT_BASE} WHERE library_id = {libraryId} AND deleted = false AND watch_status = @WatchStatus AND v.title LIKE @NameFilter";
            Action <SqliteCommand> parameterize = (command) => {
                command.Parameters.AddWithValue("@NameFilter", $"%{nameFilter}%");
                command.Parameters.AddWithValue("@WatchStatus", VideoWatchStatus.NEED_TO_WATCH);
            };

            return(await DataAccessUtil.GetPaginatedResult(pagination, query, parameterize, ParseVideo));
        }
Пример #29
0
        public async Task <long> AddWatchedVideo(long videoId)
        {
            using (var db = DataAccessUtil.CreateSqlConnection()) {
                db.Open();
                var command = new SqliteCommand($"INSERT INTO watch_history(video_id, watch_date) VALUES({videoId}, {"CURRENT_TIMESTAMP"})", db);
                command.ExecuteNonQuery();

                return(QueryUtil.GetLastInsertedPrimaryKey(db));
            }
        }
Пример #30
0
        private async Task <PaginationResult <Calendar> > GetCalendars(Pagination pagination, bool deleted, string nameFilter = "", long libraryId = DatabaseConstants.DEFAULT_ID)
        {
            var libraryClause = libraryId == DatabaseConstants.DEFAULT_ID ? "" : $"library_id = {libraryId} AND";
            var query         = $"{SELECT_BASE} WHERE {libraryClause} deleted = {deleted} AND name LIKE @NameFilter";
            Action <SqliteCommand> parameterize = (command) => {
                command.Parameters.AddWithValue("@NameFilter", $"%{nameFilter}%");
            };

            return(await DataAccessUtil.GetPaginatedResult(pagination, query, parameterize, ParseCalendar));
        }