Skip to content

Commit

Permalink
Merge branch 'main' of github.com:whosonfirst/go-whosonfirst-sqlite-s…
Browse files Browse the repository at this point in the history
…pr into main
  • Loading branch information
thisisaaronland committed Aug 11, 2021
2 parents 9bdad22 + dbcee5a commit ad315d0
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 18 deletions.
7 changes: 0 additions & 7 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -58,18 +58,11 @@ github.com/whosonfirst/go-whosonfirst-uri v0.2.0/go.mod h1:8eaDVcc4v+HHHEDaRbApd
github.com/whosonfirst/go-whosonfirst-uri v1.0.1/go.mod h1:8eaDVcc4v+HHHEDaRbApdmhPwM4/JQllw2PktvZcPVs=
github.com/whosonfirst/go-whosonfirst-uri v1.1.0 h1:kNYOmKSm3u2asUOeq7yXL1Q8gFKkPIl8A0qinKrGV/8=
github.com/whosonfirst/go-whosonfirst-uri v1.1.0/go.mod h1:8eaDVcc4v+HHHEDaRbApdmhPwM4/JQllw2PktvZcPVs=
github.com/whosonfirst/warning v0.1.0/go.mod h1:cAez7FpC/UEUrbiOXZO15v2JM8eijtFHQlN93AGFy1k=
github.com/whosonfirst/warning v0.1.1/go.mod h1:/unEMzhB9YaMeEwTJpzLN3kM5LiSxdJhKEsf/OQhn6s=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
83 changes: 72 additions & 11 deletions spr.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package spr

import (
"context"
"database/sql"
"fmt"
"github.com/aaronland/go-sqlite"
sqlite_database "github.com/aaronland/go-sqlite/database"
Expand Down Expand Up @@ -185,18 +186,46 @@ func RetrieveSPR(ctx context.Context, spr_db *sqlite_database.SQLiteDatabase, sp

spr_q := fmt.Sprintf(`SELECT
id, parent_id, name, placetype,
country, repo,
inception, cessation,
country, repo,
latitude, longitude,
min_latitude, min_longitude,
max_latitude, max_longitude,
is_current, is_deprecated, is_ceased,
is_superseded, is_superseding,
is_current, is_deprecated, is_ceased,is_superseded, is_superseding,
supersedes, superseded_by, belongsto,
is_alt, alt_label,
lastmodified
FROM %s WHERE id = ? AND alt_label = ?`, spr_table.Name())

row := conn.QueryRowContext(ctx, spr_q, args...)
return RetrieveSPRWithRow(ctx, row)
}

// See notes below

func RetrieveSPRWithRow(ctx context.Context, row *sql.Row) (wof_spr.StandardPlacesResult, error) {
return retrieveSPRWithScanner(ctx, row)
}

// See notes below

func RetrieveSPRWithRows(ctx context.Context, rows *sql.Rows) (wof_spr.StandardPlacesResult, error) {
return retrieveSPRWithScanner(ctx, rows)
}

// We go to the trouble of all this indirection because neither *sql.Row or *sql.Rows implement
// the sql.Scanner interface.
// The latter expects: Scan(src interface{}) error
// But the former pxpect: Scan(src ...interface{}) error

func retrieveSPRWithScanner(ctx context.Context, scanner interface{}) (wof_spr.StandardPlacesResult, error) {

switch scanner.(type) {
case *sql.Row, *sql.Rows:
// pass
default:
return nil, fmt.Errorf("Unsupported scanner")
}

var spr_id string
var parent_id string
Expand Down Expand Up @@ -228,19 +257,51 @@ func RetrieveSPR(ctx context.Context, spr_db *sqlite_database.SQLiteDatabase, sp
var str_superseded_by string
var str_belongs_to string

var is_alt int64
var alt_label string

var lastmodified int64

// supersedes and superseding need to be added here pending
// https://github.com/whosonfirst/go-whosonfirst-sqlite-features/issues/14

err = row.Scan(
&spr_id, &parent_id, &name, &placetype, &country, &repo,
&inception, &cessation,
&latitude, &longitude, &min_latitude, &max_latitude, &min_longitude, &max_longitude,
&is_current, &is_deprecated, &is_ceased, &is_superseded, &is_superseding,
&str_supersedes, &str_superseded_by, &str_belongs_to,
&lastmodified,
)
var scanner_err error

switch scanner.(type) {
case *sql.Rows:

scanner_err = scanner.(*sql.Rows).Scan(
&spr_id, &parent_id, &name, &placetype,
&inception, &cessation,
&country, &repo,
&latitude, &longitude,
&min_latitude, &max_latitude, &min_longitude, &max_longitude,
&is_current, &is_deprecated, &is_ceased, &is_superseded, &is_superseding,
&str_supersedes, &str_superseded_by, &str_belongs_to,
&is_alt, &alt_label,
&lastmodified,
)

default:

scanner_err = scanner.(*sql.Row).Scan(
&spr_id, &parent_id, &name, &placetype,
&inception, &cessation,
&country, &repo,
&latitude, &longitude,
&min_latitude, &max_latitude, &min_longitude, &max_longitude,
&is_current, &is_deprecated, &is_ceased, &is_superseded, &is_superseding,
&str_supersedes, &str_superseded_by, &str_belongs_to,
&is_alt, &alt_label,
&lastmodified,
)
}

if scanner_err != nil {
return nil, scanner_err
}

id, err := strconv.ParseInt(spr_id, 10, 64)

if err != nil {
return nil, err
Expand Down

0 comments on commit ad315d0

Please sign in to comment.