seed.go
⎇
Raw
1package store
2
3import "context"
4
5// Seed legt einige Beispieleinträge an, aber nur in einer leeren Datenbank.
6// Sie zeigen, wie Einträge aufgebaut und verknüpft werden, und dürfen gelöscht werden.
7func (s *Store) Seed(ctx context.Context) (bool, error) {
8 var n int
9 if err := s.db.QueryRowContext(ctx, `SELECT count(*) FROM entries`).Scan(&n); err != nil {
10 return false, err
11 }
12 if done, _ := s.Setting(ctx, "seeded"); n > 0 || done != "" {
13 return false, nil
14 }
15
16 ids := map[string]int64{}
17 for _, e := range seedEntries {
18 id, err := s.CreateEntry(ctx, e.Entry)
19 if err != nil {
20 return false, err
21 }
22 ids[e.key] = id
23 }
24 for _, l := range seedLinks {
25 if err := s.Link(ctx, ids[l[0]], ids[l[1]]); err != nil {
26 return false, err
27 }
28 }
29 if err := s.AddSource(ctx, Source{
30 EntryID: ids["pt"], Ref: "Eigenes Lehrbuch / Skript (Beispiel)", Page: "S. 123",
31 Note: "Hier Buch aus der Calibre-Bibliothek eintragen",
32 }); err != nil {
33 return false, err
34 }
35 hid, err := s.CreateHandout(ctx, "Knie – Sehnenprogramm Woche 1–2", "")
36 if err != nil {
37 return false, err
38 }
39 for _, k := range []string{"iso", "spanish"} {
40 if err := s.AddHandoutItem(ctx, hid, ids[k]); err != nil {
41 return false, err
42 }
43 }
44 return true, s.SetSetting(ctx, "seeded", "1")
45}
46
47type seedEntry struct {
48 key string
49 Entry
50}
51
52var seedLinks = [][2]string{
53 {"pt", "iso"},
54 {"pt", "spanish"},
55 {"pt", "decline"},
56 {"pt", "visa"},
57 {"pt", "proto"},
58 {"proto", "iso"},
59 {"proto", "spanish"},
60 {"proto", "decline"},
61}
62
63var seedEntries = []seedEntry{
64 {"pt", Entry{
65 Kind: "krankheitsbild", Title: "Patellatendinopathie (Jumper's Knee)", Region: "Knie",
66 Tags: "Sehne, Überlastung, Sprungsport, Beispiel",
67 Summary: "Belastungsabhängiger Schmerz am unteren Patellapol, typisch bei Sprung- und Sprintsportarten.",
68 Body: `## Befund
69- Schmerz lokal am unteren Patellapol, **belastungsabhängig** (Springen, Treppe, tiefe Hocke)
70- Typisch: Anlaufschmerz, wird beim Aufwärmen besser, danach / am Folgetag schlechter
71- Druckschmerz allein ist wenig spezifisch
72
73## Red Flags / Differenzialdiagnosen
74- Schwellung, Erguss, Blockaden → an intraartikuläre Ursache denken
75- Jugendliche: Sinding-Larsen-Johansson / Osgood-Schlatter
76
77## Behandlungsidee
781. **Belastung steuern**, nicht komplett pausieren (Schmerz während Übung bis ca. 3–4/10 meist akzeptabel, am Folgetag nicht schlechter)
792. Isometrie zur Schmerzmodulation
803. Schwere, langsame Kraftübungen (Heavy Slow Resistance)
814. Energiespeicher-Belastung (Sprünge) schrittweise zurück
825. Zurück in den Sport
83
84## Eigene Notizen
85_Hier eigene Erfahrungen ergänzen._`,
86 }},
87 {"visa", Entry{
88 Kind: "test", Title: "VISA-P Fragebogen", Region: "Knie", Tags: "Fragebogen, Verlaufskontrolle, Beispiel",
89 Summary: "Fragebogen zu Symptomen und Funktion bei Patellatendinopathie (0–100, höher = besser). Gut für die Verlaufskontrolle.",
90 Body: `## Durchführung
91Patient füllt 8 Fragen aus (Schmerz, Funktion, Sportfähigkeit).
92
93## Interpretation
94- 100 = beschwerdefrei
95- Verlauf alle 2–4 Wochen dokumentieren`,
96 }},
97 {"iso", Entry{
98 Kind: "uebung", Title: "Isometrische Kniestreckung (Wandsitz)", Region: "Knie",
99 Tags: "Isometrie, Schmerzlinderung, Sehne, Beispiel",
100 Summary: "Statisches Halten zur Schmerzlinderung bei Sehnenbeschwerden, gut als Einstieg.",
101 Dosage: "5 × 45 Sekunden halten, 2 Min. Pause, täglich",
102 Body: `## Ziel
103Schmerzmodulation, Belastbarkeit aufbauen.
104
105## Progression
106Winkel tiefer → einbeinig → mit Zusatzgewicht
107
108## Hinweise für Therapeut
109Schmerz während der Übung bis etwa 3/10 ist meist in Ordnung.`,
110 PatientText: `Lehnen Sie sich mit dem Rücken an eine Wand und rutschen Sie langsam nach unten, bis die Knie etwa **60 Grad** gebeugt sind.
111
112- Halten Sie die Position ruhig, atmen Sie dabei weiter.
113- Die Knie zeigen in Richtung der Fußspitzen.
114- Ein leichtes Ziehen an der Sehne ist in Ordnung. Wird der Schmerz stärker, gehen Sie weniger tief.`,
115 }},
116 {"spanish", Entry{
117 Kind: "uebung", Title: "Spanish Squat", Region: "Knie",
118 Tags: "Isometrie, Quadrizeps, Sehne, Beispiel",
119 Summary: "Kniebeuge mit Band hinter den Knien. Belastet den Quadrizeps stark bei wenig Kniescherkräften.",
120 Dosage: "5 × 45 Sekunden halten",
121 Body: `## Aufbau
122Festes Band (z. B. Gurt) an einem stabilen Pfosten, Band in den Kniekehlen.
123
124## Progression
125Tiefer → länger halten → dynamisch`,
126 PatientText: `Legen Sie das Band in die Kniekehlen und lehnen Sie sich nach hinten hinein. Gehen Sie in die Hocke, die **Schienbeine bleiben senkrecht**.
127
128- Oberkörper aufrecht, Gewicht auf den Fersen.
129- Position halten, ruhig weiteratmen.`,
130 }},
131 {"decline", Entry{
132 Kind: "uebung", Title: "Kniebeuge auf Schrägbrett (exzentrisch)", Region: "Knie",
133 Tags: "Exzentrik, Kraft, Sehne, Beispiel",
134 Summary: "Langsame Kniebeuge auf einem schrägen Brett, betont die Patellarsehne.",
135 Dosage: "3 × 15 Wiederholungen, 3 Sek. runter",
136 Body: `## Hinweise
137Erst wenn Isometrie gut vertragen wird. Schmerz am Folgetag beobachten.`,
138 PatientText: `Stellen Sie sich auf das Schrägbrett, Fersen oben. Gehen Sie **langsam (3 Sekunden)** in die Kniebeuge bis etwa 60–70 Grad.
139
140- Hochkommen mit beiden Beinen.
141- Die Knie zeigen in Richtung der Fußspitzen.`,
142 }},
143 {"proto", Entry{
144 Kind: "protokoll", Title: "Sehnen-Rehabilitation – Stufenmodell", Region: "Allgemein",
145 Tags: "Tendinopathie, Belastungsaufbau, Beispiel",
146 Summary: "Allgemeiner Stufenplan für Sehnenbeschwerden: von Isometrie bis zur Rückkehr in den Sport.",
147 Body: `| Stufe | Inhalt | Weiter wenn |
148|---|---|---|
149| 1 | Isometrie, mehrmals täglich | Schmerz während Übung ≤ 3/10 |
150| 2 | Schwere, langsame Kraftübungen, 3×/Woche | Kraft steigt, Folgetag stabil |
151| 3 | Energiespeicher: Hüpfen, Sprünge | Sprünge schmerzarm |
152| 4 | Sportspezifisch, Rückkehr | Volle Belastung toleriert |
153
154**Regel:** Beschwerden am Folgetag sind der wichtigste Maßstab.`,
155 }},
156}
157