summaryrefslogtreecommitdiffhomepage
path: root/src/dbx/mintages.go
blob: ad13906a1baa16b88026604a5449b4811f9da43a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package dbx

type MintageData struct {
	Standard      []MSRow
	Commemorative []MCRow
}

type MSRow struct {
	Type      int          `db:"type"`
	Year      int          `db:"year"`
	Mintmark  string       `db:"mintmark"`
	Mintages  [ndenoms]int `db:"€0,01;€0,02;€0,05;€0,10;€0,20;€0,50;€1,00;€2,00"`
	Reference string       `db:"reference"`
}

type MCRow struct {
	Type      int    `db:"type"`
	Year      int    `db:"year"`
	Name      string `db:"name"`
	Number    int    `db:"number"`
	Mintmark  string `db:"mintmark"`
	Mintage   int    `db:"mintage"`
	Reference string `db:"reference"`
}

/* DO NOT REORDER! */
const (
	TypeCirc = iota
	TypeNifc
	TypeProof
)

/* DO NOT REORDER! */
const (
	MintageUnknown = -iota - 1
	MintageInvalid
)

const ndenoms = 8

func GetMintages(country string) (MintageData, error) {
	var zero MintageData

	srows, err := DB.Query(`SELECT * FROM mintages_s WHERE country = ?`, country)
	if err != nil {
		return zero, err
	}
	defer srows.Close()
	xs, err := scanToStructs[MSRow](srows)
	if err != nil {
		return zero, err
	}

	crows, err := DB.Query(`SELECT * FROM mintages_c WHERE country = ?`, country)
	if err != nil {
		return zero, err
	}
	defer crows.Close()
	ys, err := scanToStructs[MCRow](crows)
	if err != nil {
		return zero, err
	}

	return MintageData{xs, ys}, nil
}