private async Task CreateDatabaseAsync(SqliteConnection connection)
        {
            await connection.CreateCommand("BEGIN; SELECT InitSpatialMetaData(); COMMIT;").ExecuteNonQueryAsync();
            await connection.ExecuteNonQueryAsync(@"
                CREATE TABLE IF NOT EXISTS IPRangeProviders (
                    Id INTEGER NOT NULL PRIMARY KEY ASC,
                    Name TEXT NOT NULL
                );
            ").ConfigureAwait(false);
            await connection.ExecuteNonQueryAsync(@"
                CREATE TABLE IF NOT EXISTS Areas (
                    Id INTEGER NOT NULL PRIMARY KEY ASC, 
                    Name TEXT NOT NULL, 
                    NamesByCultures TEXT,
                    Kind INTEGER NOT NULL,
                    Code TEXT,
                    AdminAreaLevel1Id INTEGER,
                    AdminAreaLevel2Id INTEGER,
                    CountryId INTEGER
                );
                CREATE INDEX IF NOT EXISTS IDX_Area_Kind ON Areas (Kind);
                SELECT AddGeometryColumn('Areas', 'Coordinates', 4326, 'POINT', 'XY');
                SELECT CreateSpatialIndex('Areas', 'Coordinates');
                ").ConfigureAwait(false);

            await connection.ExecuteNonQueryAsync(@"
                CREATE TABLE IF NOT EXISTS IPRangeInfos (
                    AreaId INTEGER NOT NULL,
                    ProviderId INTEGER NOT NULL,
                    StartLow INTEGER NOT NULL,
                    StartHigh INTEGER,
                    EndLow INTEGER NOT NULL,
                    EndHigh INTEGER
                );
                ").ConfigureAwait(false);
        }