mirror of
				https://github.com/NginxProxyManager/nginx-proxy-manager.git
				synced 2025-10-25 21:03:33 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			74 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package database
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"os"
 | |
| 
 | |
| 	"npm/internal/config"
 | |
| 	"npm/internal/logger"
 | |
| 
 | |
| 	"github.com/jmoiron/sqlx"
 | |
| 
 | |
| 	// Blank import for Sqlite
 | |
| 	_ "github.com/mattn/go-sqlite3"
 | |
| )
 | |
| 
 | |
| var dbInstance *sqlx.DB
 | |
| 
 | |
| // NewDB creates a new connection
 | |
| func NewDB() {
 | |
| 	logger.Info("Creating new DB instance")
 | |
| 	db := SqliteDB()
 | |
| 	if db != nil {
 | |
| 		dbInstance = db
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // GetInstance returns an existing or new instance
 | |
| func GetInstance() *sqlx.DB {
 | |
| 	if dbInstance == nil {
 | |
| 		NewDB()
 | |
| 	} else if err := dbInstance.Ping(); err != nil {
 | |
| 		NewDB()
 | |
| 	}
 | |
| 
 | |
| 	return dbInstance
 | |
| }
 | |
| 
 | |
| // SqliteDB Create sqlite client
 | |
| func SqliteDB() *sqlx.DB {
 | |
| 	dbFile := fmt.Sprintf("%s/nginxproxymanager.db", config.Configuration.DataFolder)
 | |
| 	autocreate(dbFile)
 | |
| 	db, err := sqlx.Open("sqlite3", dbFile)
 | |
| 	if err != nil {
 | |
| 		logger.Error("SqliteError", err)
 | |
| 		return nil
 | |
| 	}
 | |
| 
 | |
| 	return db
 | |
| }
 | |
| 
 | |
| // Commit will close and reopen the db file
 | |
| func Commit() *sqlx.DB {
 | |
| 	if dbInstance != nil {
 | |
| 		err := dbInstance.Close()
 | |
| 		if err != nil {
 | |
| 			logger.Error("DatabaseCloseError", err)
 | |
| 		}
 | |
| 	}
 | |
| 	NewDB()
 | |
| 	return dbInstance
 | |
| }
 | |
| 
 | |
| func autocreate(dbFile string) {
 | |
| 	if _, err := os.Stat(dbFile); os.IsNotExist(err) {
 | |
| 		// Create it
 | |
| 		logger.Info("Creating Sqlite DB: %s", dbFile)
 | |
| 		_, err = os.Create(dbFile)
 | |
| 		if err != nil {
 | |
| 			logger.Error("FileCreateError", err)
 | |
| 		}
 | |
| 		Commit()
 | |
| 	}
 | |
| }
 |