コード例 #1
0
        private async Task DropDatabase()
        {
            var sql = EmbeddedResource.GetAsString("DropDatabase.sql", SqlPath);

            await using var conn    = new NpgsqlConnection(_connectionString);
            await using var command = new NpgsqlCommand(sql, conn);
            await conn.OpenAsync();

            await command.ExecuteScalarAsync();

            await conn.CloseAsync();
        }
コード例 #2
0
        private async Task DropDatabaseConnections()
        {
            var sql = EmbeddedResource.GetAsString("DropConnections.sql", SqlPath);

            try
            {
                await using var conn = new NpgsqlConnection(_connectionString);
                await conn.OpenAsync();

                await using var command = new NpgsqlCommand(sql, conn);
                await command.ExecuteScalarAsync();
            }
            catch (PostgresException e) when(e.SqlState == "57P01")
            {
                // that's okay, connection lost
            }
        }
コード例 #3
0
        private async Task CreateDatabase()
        {
            await using var conn = new NpgsqlConnection(_connectionString);
            string sql = EmbeddedResource.GetAsString("CreateDatabase.sql", SqlPath);

            await using var command = new NpgsqlCommand(sql, conn);
            try
            {
                await conn.OpenAsync();

                await command.ExecuteScalarAsync();

                await conn.CloseAsync();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                throw;
            }
        }
コード例 #4
0
        public async Task <bool> DatabaseExists()
        {
            await using var conn = new NpgsqlConnection(_connectionString);
            string sql = EmbeddedResource.GetAsString("CheckDatabaseExists.sql", SqlPath);

            await using var command = new NpgsqlCommand(sql, conn);
            try
            {
                await conn.OpenAsync();

                object?result = await command.ExecuteScalarAsync();

                await conn.CloseAsync();

                return(result != null && result.Equals("soundmastery"));
            }
            catch (Exception e)
            {
                // TODO: add proper logging https://github.com/arublevsky/SoundMastery/issues/14
                Console.WriteLine(e.ToString());
                return(false);
            }
        }