mirror of
https://github.com/maplibre/martin.git
synced 2024-12-24 23:45:42 +03:00
8b34cd374c
* Fix metadata copying * Introduce a new metadata field `agg_tiles_hash_after_apply` for diff files * Added a lot of new info and debug logging * Simplified Copying interface - not much value in having all the complex builder pattern here it seems, might as well use a simple object. ## Testing * Generate SQLite DBs in memory on the fly to validate just what we need * Use `insta` for validating DB content There is now a function `dump(connection) -> Vec<Entry>` to dump the content of the entire SQLite DB into text with `serde`. At many steps through the testing, the DB content is validated with the corresponding .snap file with `insta` crate (which makes this process mega-simple, including a simple way to "bless" (update) any changes). ## Discovered bugs * Seems like normalized files do not get copied properly - they contain extras that should be removed.
90 lines
2.3 KiB
Plaintext
90 lines
2.3 KiB
Plaintext
---
|
|
source: martin-mbtiles/tests/mbtiles.rs
|
|
expression: actual_value
|
|
---
|
|
[[]]
|
|
type = 'table'
|
|
tbl_name = 'images'
|
|
sql = '''
|
|
CREATE TABLE images (
|
|
tile_id text NOT NULL PRIMARY KEY,
|
|
tile_data blob)'''
|
|
values = [
|
|
'( "", NULL )',
|
|
'( "03132BFACDB00CC63D6B7DD98D974DD5", blob(edit-v2a) )',
|
|
'( "22AF645D1859CB5CA6DA0C484F1F37EA", blob(new) )',
|
|
'( "FF76830FF90D79BB335884F256031731", blob(edit-v2) )',
|
|
]
|
|
|
|
[[]]
|
|
type = 'table'
|
|
tbl_name = 'map'
|
|
sql = '''
|
|
CREATE TABLE map (
|
|
zoom_level integer NOT NULL,
|
|
tile_column integer NOT NULL,
|
|
tile_row integer NOT NULL,
|
|
tile_id text,
|
|
PRIMARY KEY(zoom_level, tile_column, tile_row))'''
|
|
values = [
|
|
'( 5, 1, 1, "FF76830FF90D79BB335884F256031731" )',
|
|
'( 5, 2, 2, "" )',
|
|
'( 5, 3, 7, "22AF645D1859CB5CA6DA0C484F1F37EA" )',
|
|
'( 5, 3, 8, "22AF645D1859CB5CA6DA0C484F1F37EA" )',
|
|
'( 6, 1, 4, "03132BFACDB00CC63D6B7DD98D974DD5" )',
|
|
'( 6, 2, 6, "" )',
|
|
]
|
|
|
|
[[]]
|
|
type = 'table'
|
|
tbl_name = 'metadata'
|
|
sql = '''
|
|
CREATE TABLE metadata (
|
|
name text NOT NULL PRIMARY KEY,
|
|
value text)'''
|
|
values = [
|
|
'( "agg_tiles_hash", "AB9EE21538C1D28BB357ABB3A45BD6BD" )',
|
|
'( "agg_tiles_hash_after_apply", "5C90855D70120501451BDD08CA71341A" )',
|
|
'( "md-edit", "value - v2" )',
|
|
'( "md-new", "value - new" )',
|
|
'( "md-remove", NULL )',
|
|
]
|
|
|
|
[[]]
|
|
type = 'index'
|
|
tbl_name = 'images'
|
|
|
|
[[]]
|
|
type = 'index'
|
|
tbl_name = 'map'
|
|
|
|
[[]]
|
|
type = 'index'
|
|
tbl_name = 'metadata'
|
|
|
|
[[]]
|
|
type = 'view'
|
|
tbl_name = 'tiles'
|
|
sql = '''
|
|
CREATE VIEW tiles AS
|
|
SELECT map.zoom_level AS zoom_level,
|
|
map.tile_column AS tile_column,
|
|
map.tile_row AS tile_row,
|
|
images.tile_data AS tile_data
|
|
FROM map
|
|
JOIN images ON images.tile_id = map.tile_id'''
|
|
|
|
[[]]
|
|
type = 'view'
|
|
tbl_name = 'tiles_with_hash'
|
|
sql = '''
|
|
CREATE VIEW tiles_with_hash AS
|
|
SELECT
|
|
map.zoom_level AS zoom_level,
|
|
map.tile_column AS tile_column,
|
|
map.tile_row AS tile_row,
|
|
images.tile_data AS tile_data,
|
|
images.tile_id AS tile_hash
|
|
FROM map
|
|
JOIN images ON images.tile_id = map.tile_id'''
|