feat(SQL): Added Base of MSSQL Connector

This commit is contained in:
netbenix 2022-01-14 18:46:18 +01:00
parent e5aaf4e31a
commit 5563afa4d6
2 changed files with 71 additions and 0 deletions

67
SQL/MSSQLConnector.go Normal file
View file

@ -0,0 +1,67 @@
package SQL
import (
"database/sql"
"fmt"
"github.com/google/uuid"
"net/url"
"scabiosa/Logging"
"scabiosa/Tools"
"time"
)
type MSSQLConnector struct {
Address string
Port uint16
Database string
DbUser string
DbPassword string
}
func GetMSSQLInstance(sqlConfig Tools.SQLConfig) MSSQLConnector {
var mssql MSSQLConnector
mssql.Address = sqlConfig.SqlAddress
mssql.Port = sqlConfig.SqlPort
mssql.Database = sqlConfig.Database
mssql.DbUser = sqlConfig.DbUser
mssql.DbPassword = sqlConfig.DbPassword
return mssql
}
func CheckIfEventLogTableExist(db *sql.DB, mssql MSSQLConnector) bool {
rows, _ := db.Query("SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND TABLE_NAME = 'EventLog';")
if !rows.Next() {
return false
}
return true
}
func CreateMSSQLConnection(mssql MSSQLConnector) *sql.DB {
logger := Logging.DetailedLogger("MS-SQL", "createConnection")
query := url.Values{}
query.Add("app name", "scabiosa")
query.Add("database", "scabiosa-test")
sqlSettings := &url.URL{
Scheme: "sqlserver",
User: url.UserPassword(mssql.DbUser, mssql.DbPassword),
Host: fmt.Sprintf("%s:%d", mssql.Address, mssql.Port),
RawQuery: query.Encode(),
}
db, err := sql.Open("sqlserver", sqlSettings.String())
if err != nil {
logger.Fatal(err)
}
return db
}
func (mssql MSSQLConnector) createDefaultTables() {}
func (mssql MSSQLConnector) newLogEntry(uuid uuid.UUID, logType LogType, backupName string, stage SQLStage, storageType RemoteStorageType, description string, timestamp time.Time) {
}
func (mssql MSSQLConnector) newBackupEntry(backupName string, lastBackup time.Time, localBackup bool, filePath string, storageType RemoteStorageType, remotePath string, localPath string) {
}

View file

@ -49,6 +49,10 @@ func GetSQLInstance() SQLService {
{
return GetMariaDBInstance(sqlConfig)
}
case "mssql":
{
return GetMSSQLInstance(sqlConfig)
}
}
return nil