inou/find_dossiers/main.go

76 lines
2.0 KiB
Go

package main
import (
"fmt"
"inou/lib"
_ "github.com/mattn/go-sqlite3"
)
var keepIDs = []string{
"4f1dc24ae9f81a69", // Johan
"4cc04ada1c1a77cf", // Tanya
"3b35815d8baf50e6", // Sophia
"3585f4eb0a9e96e7", // Tatiana
"63d6dbe29b8bea45", // Anastasiia
}
func esc(s string) string {
// Escape single quotes for SQL
result := ""
for _, c := range s {
if c == '\'' {
result += "''"
} else {
result += string(c)
}
}
return result
}
func main() {
if err := lib.CryptoInit("/tank/inou/master.key"); err != nil {
fmt.Printf("Error: %v\n", err)
return
}
if err := lib.DBInit("/tank/inou/data/inou.db"); err != nil {
fmt.Printf("Error: %v\n", err)
return
}
defer lib.DBClose()
fmt.Println("-- DOSSIERS")
var dossiers []*lib.Dossier
for _, id := range keepIDs {
d, err := lib.DossierGet(nil, id)
if err != nil {
continue
}
dossiers = append(dossiers, d)
}
for _, d := range dossiers {
fmt.Printf("INSERT INTO dossiers (dossier_id, email_hash, email, name, date_of_birth, sex, phone, language, timezone, created_at, weight_unit, height_unit) VALUES ('%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', %d, '%s', '%s');\n",
d.DossierID, esc(d.EmailHash), esc(d.Email), esc(d.Name), esc(d.DateOfBirth), d.Sex, esc(d.Phone), esc(d.Language), esc(d.Timezone), d.CreatedAt, esc(d.WeightUnit), esc(d.HeightUnit))
}
fmt.Println("\n-- DOSSIER_ACCESS")
var accesses []*lib.DossierAccess
for _, id := range keepIDs {
list, _ := lib.AccessListByAccessor(id)
for _, a := range list {
for _, kid := range keepIDs {
if a.TargetDossierID == kid {
accesses = append(accesses, a)
}
}
}
}
for _, a := range accesses {
isCare := 0
if a.IsCareReceiver { isCare = 1 }
canEdit := 0
if a.CanEdit { canEdit = 1 }
fmt.Printf("INSERT INTO dossier_access (accessor_dossier_id, target_dossier_id, relation, is_care_receiver, can_edit, status, created_at, accessed_at) VALUES ('%s', '%s', %d, %d, %d, %d, %d, %d);\n",
a.AccessorDossierID, a.TargetDossierID, a.Relation, isCare, canEdit, a.Status, a.CreatedAt, a.AccessedAt)
}
}