1
Fork 0
photoview/api/graphql/models/site_info.go

49 lines
1.2 KiB
Go
Raw Normal View History

2020-02-05 16:49:51 +01:00
package models
import (
"database/sql"
"github.com/pkg/errors"
2020-02-05 16:49:51 +01:00
)
func initializeSiteInfoRow(db *sql.DB) (*SiteInfo, error) {
_, err := db.Exec("INSERT INTO site_info (initial_setup, periodic_scan_interval, concurrent_workers) VALUES (true, 0, 3)")
if err != nil {
return nil, errors.Wrap(err, "initialize site_info row")
}
siteInfo := &SiteInfo{}
row := db.QueryRow("SELECT * FROM site_info")
if err := row.Scan(&siteInfo.InitialSetup, &siteInfo.PeriodicScanInterval, &siteInfo.ConcurrentWorkers); err != nil {
return nil, errors.Wrap(err, "get site_info row after initialization")
}
return siteInfo, nil
}
// GetSiteInfo gets the site info row from the database, and creates it if it does not exist
2020-02-05 16:49:51 +01:00
func GetSiteInfo(db *sql.DB) (*SiteInfo, error) {
rows, err := db.Query("SELECT * FROM site_info")
defer rows.Close()
2020-02-05 16:49:51 +01:00
if err != nil {
return nil, err
}
siteInfo := &SiteInfo{}
2020-02-05 16:49:51 +01:00
if !rows.Next() {
// Entry does not exist
siteInfo, err = initializeSiteInfoRow(db)
if err != nil {
2020-02-05 16:49:51 +01:00
return nil, err
}
} else {
if err := rows.Scan(&siteInfo.InitialSetup, &siteInfo.PeriodicScanInterval, &siteInfo.ConcurrentWorkers); err != nil {
2020-02-05 16:49:51 +01:00
return nil, err
}
}
return siteInfo, nil
2020-02-05 16:49:51 +01:00
}