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("", 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) } }