1- /// TileMill Layer Source YAML Format
2- ///
3- /// Further reading: https://tilemill-project.github.io/tilemill/docs/manual/adding-layers/
1+ //! Data models and trait implementations for TileMill 2 yaml sources.
2+ //!
3+ //! Further reading: https://tilemill-project.github.io/tilemill/docs/manual/adding-layers/
4+
45use crate :: { get_epsg_3857_tile_bounds, TileSource } ;
56
67use std:: collections:: HashMap ;
@@ -10,9 +11,9 @@ use serde::Deserialize;
1011// TODO: remove once async fn in traits become stable
1112use async_trait:: async_trait;
1213
13- use sqlx:: { cursor :: Cursor , query, PgPool , Row } ;
14+ use sqlx:: { query, PgPool , Row } ;
1415
15- /// A TileMill (.tm2source) data structure .
16+ /// The TileMill (.tm2source) data source model .
1617///
1718/// Note: The current data structure is not entirely complete. See the
1819/// crate README for limitations.
@@ -31,6 +32,7 @@ pub struct TM2Source {
3132 pub bounds : [ f64 ; 4 ] ,
3233}
3334
35+ /// A single layer of a TM2Source
3436#[ derive( Clone , Deserialize , Debug ) ]
3537pub struct DataLayer {
3638 pub id : String ,
@@ -40,12 +42,14 @@ pub struct DataLayer {
4042 // TODO: srs
4143}
4244
45+ /// A `DataLayer`'s source details
4346#[ derive( Clone , Deserialize , Debug ) ]
4447pub struct LayerSource {
4548 pub table : String ,
4649 // TODO: Database connection parameters
4750}
4851
52+ /// Additional properties of a `DataLayer`
4953#[ derive( Clone , Deserialize , Debug ) ]
5054pub struct DataLayerProperties {
5155 #[ serde( rename = "buffer-size" ) ]
@@ -150,8 +154,8 @@ impl TileSource for TM2Source {
150154 } ) ;
151155
152156 let mut raw_tile: Vec < u8 > = Vec :: new ( ) ;
153- let mut stream = query. fetch ( & mut conn) ;
154- while let Some ( row) = stream . next ( ) . await ? {
157+ let results = query. fetch_all ( & mut conn) . await ? ;
158+ for row in results {
155159 let layer: Vec < u8 > = row. get ( 0 ) ;
156160 raw_tile. extend_from_slice ( & layer) ;
157161 }
0 commit comments