From 5563afa4d6aa6946f9c984ef49e0ffd34a563898 Mon Sep 17 00:00:00 2001 From: netbenix Date: Fri, 14 Jan 2022 18:46:18 +0100 Subject: [PATCH] feat(SQL): Added Base of MSSQL Connector --- SQL/MSSQLConnector.go | 67 +++++++++++++++++++++++++++++++++++++++++++ SQL/SQLInterface.go | 4 +++ 2 files changed, 71 insertions(+) create mode 100644 SQL/MSSQLConnector.go diff --git a/SQL/MSSQLConnector.go b/SQL/MSSQLConnector.go new file mode 100644 index 0000000..6df9912 --- /dev/null +++ b/SQL/MSSQLConnector.go @@ -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) { +} diff --git a/SQL/SQLInterface.go b/SQL/SQLInterface.go index fb98731..393a8ba 100644 --- a/SQL/SQLInterface.go +++ b/SQL/SQLInterface.go @@ -49,6 +49,10 @@ func GetSQLInstance() SQLService { { return GetMariaDBInstance(sqlConfig) } + case "mssql": + { + return GetMSSQLInstance(sqlConfig) + } } return nil