all repos

anpi @ a098b821462a52cf06781875ff519401b967e154

yaml to anki importer

anpi/anki/anki.go (view raw)

Oleksandr Smirnov Oleksandr Smirnov
olexsmir@gmail.com
fix linter errors, 1 year ago
1
package anki
2
3
type AnkiClient struct{}
4
5
func NewAnkiClient() AnkiClient {
6
	return AnkiClient{}
7
}
8
9
type ModelFieldNames []string
10
11
type ModelFieldNamesParams struct {
12
	ModelName string `json:"modelName"`
13
}
14
15
func (a *AnkiClient) GetModelFieldNames(modelName string) (ModelFieldNames, error) {
16
	res, err := request[ModelFieldNames]("modelFieldNames", ModelFieldNamesParams{
17
		ModelName: modelName,
18
	})
19
	if err != nil {
20
		return ModelFieldNames{}, err
21
	}
22
23
	return res.Result, nil
24
}
25
26
type DeckNames []string
27
28
func (a *AnkiClient) GetDeckNames() (DeckNames, error) {
29
	res, err := request[DeckNames]("deckNames", paramsDefault{})
30
	if err != nil {
31
		return DeckNames{}, err
32
	}
33
34
	return res.Result, nil
35
}
36
37
type (
38
	NoteID int
39
	Note   struct {
40
		DeckName  string            `json:"deckName"`
41
		ModelName string            `json:"modelName"`
42
		Fields    map[string]string `json:"fields"`
43
		Tags      []string          `json:"tags"`
44
	}
45
46
	internalNote struct {
47
		Note Note `json:"note"`
48
	}
49
)
50
51
func (a *AnkiClient) AddNote(inp Note) (NoteID, error) {
52
	res, err := request[NoteID]("addNote", internalNote{Note{
53
		DeckName:  inp.DeckName,
54
		ModelName: inp.ModelName,
55
		Fields:    inp.Fields,
56
		Tags:      inp.Tags,
57
	}})
58
	if err != nil {
59
		return 0, err
60
	}
61
62
	return res.Result, nil
63
}