github.com/benoitkugler/goacve@v0.0.0-20201217100549-151ce6e55dc8/server/migration/v2_to_v3/cmd/import_test_nautique/main.go (about) 1 package main 2 3 import ( 4 "database/sql" 5 "flag" 6 "io/ioutil" 7 "log" 8 "time" 9 10 "github.com/benoitkugler/goACVE/server/core/rawdata" 11 "github.com/benoitkugler/goACVE/logs" 12 "github.com/benoitkugler/goACVE/server/documents" 13 ) 14 15 func main() { 16 dev := flag.Bool("dev", true, "which DB to use") 17 flag.Parse() 18 19 logsDB := logs.DBProd 20 if *dev { 21 logsDB = logs.DBDev 22 } 23 24 content := loadTestNautique() 25 log.Println("File loaded in memory") 26 27 db, err := rawdata.ConnectDB(logsDB) 28 if err != nil { 29 log.Fatal(err) 30 } 31 defer db.Close() 32 33 // on trouve la contrainte test nautique 34 contraintes, err := rawdata.SelectAllContraintes(db) 35 if err != nil { 36 log.Fatal(err) 37 } 38 for _, contrainte := range contraintes { 39 if contrainte.Builtin == rawdata.CTestNautique { 40 log.Println("Found contrainte. Uploading...") 41 uploadTest(db, contrainte, content) 42 log.Println("Test nautique uploaded") 43 return 44 } 45 } 46 log.Fatal("Can't find contrainte.") 47 } 48 49 func loadTestNautique() []byte { 50 content, err := ioutil.ReadFile("../ressources/attestation_aisance_aquatique.pdf") 51 if err != nil { 52 log.Fatalf("can't load test nautique : %v", err) 53 } 54 return content 55 } 56 57 // crée un document, upload `content` et le relie à la contrainte 58 func uploadTest(db *sql.DB, contrainte rawdata.Contrainte, content []byte) { 59 tx, err := db.Begin() 60 if err != nil { 61 log.Fatal(err) 62 } 63 64 // on insert les méta données 65 doc := rawdata.Document{DateHeureModif: rawdata.Time(time.Now()), Description: "Test nautique à compléter.", 66 NomClient: "test_nautique.pdf", Taille: rawdata.Taille(len(content))} 67 doc, err = doc.Insert(tx) 68 if err != nil { 69 _ = tx.Rollback() 70 log.Fatal(err) 71 } 72 73 // on insert le contenu 74 doc, err = documents.SaveDocument(tx, doc.Id, content, "test_nautique.pdf", false) 75 if err != nil { 76 _ = tx.Rollback() 77 log.Fatal(err) 78 } 79 80 // on lie à la contrainte 81 contrainte.IdDocument = rawdata.NewOptionnalId(doc.Id) 82 _, err = contrainte.Update(tx) 83 if err != nil { 84 _ = tx.Rollback() 85 log.Fatal(err) 86 } 87 if err = tx.Commit(); err != nil { 88 log.Fatal(err) 89 } 90 }