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  }