all repos

anpi @ d5ee330

yaml to anki importer

anpi/anki/anki.go (view raw)

Oleksandr Smirnov Oleksandr Smirnov
olexsmir@gmail.com
impl anki add note, 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
	}
44
45
	internalNote struct {
46
		Note Note `json:"note"`
47
	}
48
)
49
50
func (a *AnkiClient) AddNote(deckName, modelName string, fields map[string]string) (NoteID, error) {
51
	res, err := request[NoteID]("addNote", internalNote{Note{
52
		DeckName:  deckName,
53
		ModelName: modelName,
54
		Fields:    fields,
55
	}})
56
	if err != nil {
57
		return 0, err
58
	}
59
60
	return res.Result, nil
61
}