Beispiel #1
0
        /// <summary>
        ///     Creates a SQL query string to fetch the count of rows based on criteria relevant to the type of value.
        /// </summary>
        /// <param name="value">The value to use for data or criteria.</param>
        /// <param name="parameters">
        ///     A <see cref="List{T}" /> of <see cref="SQLiteParameter" /> populated with the values need to
        ///     complete the query.
        /// </param>
        /// <exception cref="ArgumentOutOfRangeException">
        ///     Enlarging the value of this instance would exceed
        ///     <see cref="P:System.Text.StringBuilder.MaxCapacity" />.
        /// </exception>
        public virtual string GetCountSql(IdentifyingInfo value, ref List <SQLiteParameter> parameters)
        {
            if (value.Id.HasValue)
            {
                var idParameter = SqliteExtensions.Create(IdColumnName, DbType.Int32, value.Id.Value);
                parameters.Add(idParameter);
            }

            if (!value.Name.IsNullOrEmpty())
            {
                var nameParameter = SqliteExtensions.Create(NameColumnName, DbType.String, value.Name);
                parameters.Add(nameParameter);
            }

            return($"SELECT COUNT(*) FROM {TableName} {GenerateWhereString(GenerateWhereClauses(parameters))};");
        }
Beispiel #2
0
        public string GetAlbumsByArtistSql(IdentifyingInfo value, ref List <SQLiteParameter> parameters)
        {
            SQLiteParameter idParameter;

            if (value.Id.HasValue)
            {
                idParameter = SqliteExtensions.Create(AlbumTable.ArtistIdColumnName, DbType.Int32, value.Id.Value);
                parameters.Add(idParameter);
            }
            else
            {
                throw new ArgumentException(Resources.IdOrNameNotProvided, nameof(value));
            }

            return($"SELECT * FROM {_albumTable.TableName} WHERE {AlbumTable.ArtistIdColumnName} = {idParameter.ParameterName};");
        }
Beispiel #3
0
        /// <summary>
        ///     Creates a SQL query string to fetch the id of an item from its name
        /// </summary>
        /// <param name="value">The value to use for data or criteria.</param>
        /// <param name="parameters">
        ///     A <see cref="List{T}" /> of <see cref="SQLiteParameter" /> populated with the values need to
        ///     complete the query.
        /// </param>
        public virtual string GetIdFromNameSql(IdentifyingInfo value, ref List <SQLiteParameter> parameters)
        {
            SQLiteParameter nameParameter;

            if (!value.Name.IsNullOrEmpty())
            {
                nameParameter = SqliteExtensions.Create(NameColumnName, DbType.String, value.Name);
                parameters.Add(nameParameter);
            }
            else
            {
                throw new ArgumentException(Resources.IdOrNameNotProvided, nameof(value));
            }

            return($"SELECT {IdColumnName} FROM {TableName} WHERE {NameColumnName} = {nameParameter.ParameterName};");
        }
Beispiel #4
0
        /// <summary>
        ///     Creates a SQL query string to delete the rows meeting the criteria relevant to the type of value.
        /// </summary>
        /// <param name="value">The value to use for data or criteria.</param>
        /// <param name="parameters">
        ///     A <see cref="List{T}" /> of <see cref="SQLiteParameter" /> populated with the values need to
        ///     complete the query.
        /// </param>
        /// <exception cref="ArgumentException">Thrown if the id and name are both null.</exception>
        public virtual string GetDeleteSql(IdentifyingInfo value, ref List <SQLiteParameter> parameters)
        {
            if (value.Id.HasValue)
            {
                var idParameter = SqliteExtensions.Create(IdColumnName, DbType.Int32, value.Id.Value);
                parameters.Add(idParameter);
            }
            else if (!value.Name.IsNullOrEmpty())
            {
                var idParameter = SqliteExtensions.Create(NameColumnName, DbType.String, value.Name);
                parameters.Add(idParameter);
            }
            else
            {
                throw new ArgumentException(Resources.IdOrNameNotProvided, nameof(value));
            }

            return($"DELETE FROM {TableName} {GenerateWhereString(GenerateWhereClauses(parameters))};");
        }
Beispiel #5
0
        public void CreateTest()
        {
            var parameterName = "parameter";
            var type          = DbType.Boolean;
            var value         = true;

            var p = SqliteExtensions.Create(parameterName, type, value);

            Assert.AreEqual("@" + parameterName, p.ParameterName);
            Assert.AreEqual(type, p.DbType);
            Assert.AreEqual(value, p.Value);

            parameterName = "@parameter";

            p = SqliteExtensions.Create(parameterName, type, value);
            Assert.AreEqual(parameterName, p.ParameterName);
            Assert.AreEqual(type, p.DbType);
            Assert.AreEqual(value, p.Value);
        }
        public async Task Initialize()
        {
            var dbFile = Path.Combine(_appPaths.DataPath, "notifications.db");

            _connection = await SqliteExtensions.ConnectToDb(dbFile, _logger).ConfigureAwait(false);

            string[] queries =
            {
                "create table if not exists Notifications (Id GUID NOT NULL, UserId GUID NOT NULL, Date DATETIME NOT NULL, Name TEXT NOT NULL, Description TEXT, Url TEXT, Level TEXT NOT NULL, IsRead BOOLEAN NOT NULL, Category TEXT NOT NULL, RelatedId TEXT, PRIMARY KEY (Id, UserId))",
                "create index if not exists idx_Notifications on Notifications(Id, UserId)",

                //pragmas
                "pragma temp_store = memory",

                "pragma shrink_memory"
            };

            _connection.RunQueries(queries, _logger);

            PrepareStatements();
        }
Beispiel #7
0
        public async Task Initialize()
        {
            var dbFile = Path.Combine(_appPaths.DataPath, "activitylog.db");

            _connection = await SqliteExtensions.ConnectToDb(dbFile, _logger).ConfigureAwait(false);

            string[] queries =
            {
                "create table if not exists ActivityLogEntries (Id GUID PRIMARY KEY, Name TEXT, Overview TEXT, ShortOverview TEXT, Type TEXT, ItemId TEXT, UserId TEXT, DateCreated DATETIME, LogSeverity TEXT)",
                "create index if not exists idx_ActivityLogEntries on ActivityLogEntries(Id)",

                //pragmas
                "pragma temp_store = memory",

                "pragma shrink_memory"
            };

            _connection.RunQueries(queries, _logger);

            PrepareStatements();
        }
Beispiel #8
0
        /// <summary>
        /// Opens the connection to the database
        /// </summary>
        /// <returns>Task.</returns>
        public async Task Initialize()
        {
            var dbFile = Path.Combine(_appPaths.DataPath, "shares.db");

            _connection = await SqliteExtensions.ConnectToDb(dbFile, Logger).ConfigureAwait(false);

            string[] queries =
            {
                "create table if not exists Shares (Id GUID, ItemId TEXT, UserId TEXT, ExpirationDate DateTime, PRIMARY KEY (Id))",
                "create index if not exists idx_Shares on Shares(Id)",

                //pragmas
                "pragma temp_store = memory",

                "pragma shrink_memory"
            };

            _connection.RunQueries(queries, Logger);

            PrepareStatements();
        }
Beispiel #9
0
        public async Task Initialize()
        {
            var dbFile = Path.Combine(_appPaths.DataPath, "authentication.db");

            _connection = await SqliteExtensions.ConnectToDb(dbFile, _logger).ConfigureAwait(false);

            string[] queries =
            {
                "create table if not exists AccessTokens (Id GUID PRIMARY KEY, AccessToken TEXT NOT NULL, DeviceId TEXT, AppName TEXT, DeviceName TEXT, UserId TEXT, IsActive BIT, DateCreated DATETIME NOT NULL, DateRevoked DATETIME)",
                "create index if not exists idx_AccessTokens on AccessTokens(Id)",

                //pragmas
                "pragma temp_store = memory",

                "pragma shrink_memory"
            };

            _connection.RunQueries(queries, _logger);

            PrepareStatements();
        }
Beispiel #10
0
        public void ExecuteCountQueryWithParametersTest()
        {
            var tableName  = "testingTable" + HelperObjectFactory.GetRandomInt(0);
            var parameters = new List <SQLiteParameter>();
            var aParameter = SqliteExtensions.Create("a", DbType.String, "string1");
            var bParameter = SqliteExtensions.Create("b", DbType.Int32, 32);

            parameters.Add(aParameter);
            parameters.Add(bParameter);

            DatabaseWrapper.ExecuteSql($"CREATE TABLE {tableName}(a, b);");
            Assert.AreEqual(DatabaseWrapper.ExecuteCountQueryWithParameters($"SELECT COUNT(a) FROM {tableName} WHERE a = 'nothing';", parameters), 0);

            DatabaseWrapper.ExecuteSqlWithParameters($"INSERT INTO {tableName}(a, b) VALUES ({aParameter.ParameterName}, {bParameter.ParameterName});", parameters);
            Assert.AreEqual(DatabaseWrapper.ExecuteCountQueryWithParameters($"SELECT COUNT(a) FROM {tableName} WHERE a = {aParameter.ParameterName};", parameters), 1);

            aParameter = SqliteExtensions.Create("a", DbType.String, "string2");
            bParameter = SqliteExtensions.Create("b", DbType.Int32, 64);
            DatabaseWrapper.ExecuteSqlWithParameters($"INSERT INTO {tableName}(a, b) VALUES ({aParameter.ParameterName}, {bParameter.ParameterName});", parameters);
            Assert.AreEqual(DatabaseWrapper.ExecuteCountQueryWithParameters($"SELECT COUNT(b) FROM {tableName} WHERE b > 20;", parameters), 2);

            DatabaseWrapper.ExecuteSql($"DROP TABLE {tableName};");
        }
Beispiel #11
0
        public async Task Initialize()
        {
            var dbFile = Path.Combine(_appPaths.DataPath, "sync14.db");

            _connection = await SqliteExtensions.ConnectToDb(dbFile, _logger).ConfigureAwait(false);

            string[] queries =
            {
                "create table if not exists SyncJobs (Id GUID PRIMARY KEY, TargetId TEXT NOT NULL, Name TEXT NOT NULL, Quality TEXT NOT NULL, Status TEXT NOT NULL, Progress FLOAT, UserId TEXT NOT NULL, ItemIds TEXT NOT NULL, Category TEXT, ParentId TEXT, UnwatchedOnly BIT, ItemLimit INT, SyncNewContent BIT, DateCreated DateTime, DateLastModified DateTime, ItemCount int)",
                "create index if not exists idx_SyncJobs on SyncJobs(Id)",

                "create table if not exists SyncJobItems (Id GUID PRIMARY KEY, ItemId TEXT, ItemName TEXT, MediaSourceId TEXT, JobId TEXT, TemporaryPath TEXT, OutputPath TEXT, Status TEXT, TargetId TEXT, DateCreated DateTime, Progress FLOAT, AdditionalFiles TEXT, MediaSource TEXT, IsMarkedForRemoval BIT, JobItemIndex INT)",
                "create index if not exists idx_SyncJobItems on SyncJobs(Id)",

                //pragmas
                "pragma temp_store = memory",

                "pragma shrink_memory"
            };

            _connection.RunQueries(queries, _logger);

            PrepareStatements();
        }
Beispiel #12
0
        public async Task Initialize()
        {
            var dbFile = Path.Combine(_appPaths.DataPath, "sync.db");

            _connection = await SqliteExtensions.ConnectToDb(dbFile, _logger).ConfigureAwait(false);

            string[] queries =
            {
                "create table if not exists SyncJobs (Id GUID PRIMARY KEY, TargetId TEXT NOT NULL, Name TEXT NOT NULL, Quality TEXT NOT NULL, Status TEXT NOT NULL, Progress FLOAT, UserId TEXT NOT NULL, ItemIds TEXT NOT NULL, UnwatchedOnly BIT, SyncLimit BigInt, LimitType TEXT, IsDynamic BIT, DateCreated DateTime, DateLastModified DateTime, ItemCount int)",
                "create index if not exists idx_SyncJobs on SyncJobs(Id)",

                "create table if not exists SyncJobItems (Id GUID PRIMARY KEY, ItemId TEXT, JobId TEXT, OutputPath TEXT, Status TEXT, TargetId TEXT)",
                "create index if not exists idx_SyncJobItems on SyncJobs(Id)",

                //pragmas
                "pragma temp_store = memory",

                "pragma shrink_memory"
            };

            _connection.RunQueries(queries, _logger);

            PrepareStatements();
        }