Import project backup into new git repo
This commit is contained in:
commit
4ac3625f45
15 changed files with 1340 additions and 0 deletions
data
97
data/data.go
Normal file
97
data/data.go
Normal file
|
@ -0,0 +1,97 @@
|
|||
package data
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"log"
|
||||
|
||||
"github.com/spf13/viper"
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
var db *gorm.DB
|
||||
|
||||
type Membre struct {
|
||||
gorm.Model
|
||||
NumEtud string `mapper:"num_etud" json:"num_etud"`
|
||||
Nom string `mapper:"-" json:"-"`
|
||||
}
|
||||
|
||||
func OpenDatabase() error {
|
||||
var err error
|
||||
|
||||
var dialector gorm.Dialector
|
||||
|
||||
switch t := viper.GetString("db.type"); t {
|
||||
case "sqlite":
|
||||
log.Println("Using driver gorm.io/driver/sqlite")
|
||||
|
||||
db_sqlite_path := viper.GetString("db.sqlite.path")
|
||||
|
||||
if db_sqlite_path == "" {
|
||||
log.Fatal("No valid database file found in `--db-sqlite-path` or `db.sqlite.path`.")
|
||||
}
|
||||
|
||||
log.Println("Using database file:", db_sqlite_path)
|
||||
|
||||
dialector = sqlite.Open(db_sqlite_path)
|
||||
default:
|
||||
log.Fatalf("Unrecognized database driver requested (%s).\n", t)
|
||||
}
|
||||
|
||||
db, err = gorm.Open(dialector, &gorm.Config{})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
sqlDB, err := db.DB()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return sqlDB.Ping()
|
||||
}
|
||||
|
||||
func MigrateDatabase() error {
|
||||
err := db.AutoMigrate(&Membre{})
|
||||
return err
|
||||
}
|
||||
|
||||
func ReadMembre(num_etud string) (Membre, error) {
|
||||
var membre Membre
|
||||
result := db.Limit(1).Find(&membre, "num_etud = ?", num_etud)
|
||||
|
||||
if result.Error != nil {
|
||||
return membre, result.Error
|
||||
}
|
||||
|
||||
return membre, nil
|
||||
}
|
||||
|
||||
func InsertMembre(membre *Membre) (error, uint) {
|
||||
// Reset ID before insertion
|
||||
membre.ID = 0
|
||||
|
||||
// Insert membre into database
|
||||
result := db.Create(&membre)
|
||||
|
||||
if result.Error != nil {
|
||||
return result.Error, 0
|
||||
}
|
||||
|
||||
return nil, membre.ID
|
||||
}
|
||||
|
||||
func InsertMembres(membres []*Membre, batch_size int) error {
|
||||
if len(membres) == 0 {
|
||||
return errors.New("Cannot insert empty batch of membres.")
|
||||
}
|
||||
|
||||
for _, membre := range membres {
|
||||
membre.ID = 0
|
||||
}
|
||||
|
||||
db.CreateInBatches(&membres, batch_size)
|
||||
|
||||
return nil
|
||||
}
|
Reference in a new issue