114 lines
3.2 KiB
Go
114 lines
3.2 KiB
Go
package database
|
|
|
|
import (
|
|
"AdaptixServer/core/utils/logs"
|
|
"database/sql"
|
|
"errors"
|
|
"fmt"
|
|
|
|
"github.com/Adaptix-Framework/axc2"
|
|
)
|
|
|
|
func (dbms *DBMS) DbScreenshotExist(screenId string) bool {
|
|
var id string
|
|
err := dbms.database.QueryRow("SELECT ScreenId FROM Screenshots WHERE ScreenId = ? LIMIT 1;", screenId).Scan(&id)
|
|
return err == nil
|
|
}
|
|
|
|
func (dbms *DBMS) DbScreenshotInsert(screenData adaptix.ScreenData) error {
|
|
ok := dbms.DatabaseExists()
|
|
if !ok {
|
|
return errors.New("database does not exist")
|
|
}
|
|
|
|
insertQuery := `INSERT OR IGNORE INTO Screenshots (ScreenId, User, Computer, LocalPath, Note, Date) values(?,?,?,?,?,?);`
|
|
result, err := dbms.database.Exec(insertQuery, screenData.ScreenId, screenData.User, screenData.Computer, screenData.LocalPath, screenData.Note, screenData.Date)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
rows, _ := result.RowsAffected()
|
|
if rows == 0 {
|
|
return fmt.Errorf("screen %s already exists", screenData.ScreenId)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (dbms *DBMS) DbScreenshotUpdate(screenId string, note string) error {
|
|
ok := dbms.DatabaseExists()
|
|
if !ok {
|
|
return errors.New("database does not exist")
|
|
}
|
|
|
|
updateQuery := `UPDATE Screenshots SET Note = ? WHERE ScreenId = ?;`
|
|
result, err := dbms.database.Exec(updateQuery, note, screenId)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
rows, _ := result.RowsAffected()
|
|
if rows == 0 {
|
|
return fmt.Errorf("screen %s does not exist", screenId)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (dbms *DBMS) DbScreenshotDelete(screenId string) error {
|
|
ok := dbms.DatabaseExists()
|
|
if !ok {
|
|
return errors.New("database does not exist")
|
|
}
|
|
|
|
deleteQuery := `DELETE FROM Screenshots WHERE ScreenId = ?;`
|
|
result, err := dbms.database.Exec(deleteQuery, screenId)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
rows, _ := result.RowsAffected()
|
|
if rows == 0 {
|
|
return fmt.Errorf("screen %s does not exist", screenId)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (dbms *DBMS) DbScreenshotById(screenId string) (*adaptix.ScreenData, error) {
|
|
ok := dbms.DatabaseExists()
|
|
if !ok {
|
|
return nil, errors.New("database does not exist")
|
|
}
|
|
|
|
selectQuery := `SELECT ScreenId, User, Computer, LocalPath, Note, Date FROM Screenshots WHERE ScreenId = ?;`
|
|
row := dbms.database.QueryRow(selectQuery, screenId)
|
|
|
|
screenData := &adaptix.ScreenData{}
|
|
err := row.Scan(&screenData.ScreenId, &screenData.User, &screenData.Computer, &screenData.LocalPath, &screenData.Note, &screenData.Date)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("screen %s not found", screenId)
|
|
}
|
|
return screenData, nil
|
|
}
|
|
|
|
func (dbms *DBMS) DbScreenshotAll() []adaptix.ScreenData {
|
|
var screens []adaptix.ScreenData
|
|
|
|
ok := dbms.DatabaseExists()
|
|
if ok {
|
|
selectQuery := `SELECT ScreenId, User, Computer, LocalPath, Note, Date FROM Screenshots ORDER BY Date;`
|
|
query, err := dbms.database.Query(selectQuery)
|
|
if err == nil {
|
|
for query.Next() {
|
|
screenData := adaptix.ScreenData{}
|
|
err = query.Scan(&screenData.ScreenId, &screenData.User, &screenData.Computer, &screenData.LocalPath, &screenData.Note, &screenData.Date)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
screens = append(screens, screenData)
|
|
}
|
|
} else {
|
|
logs.Debug("", "Failed to query screenshots: "+err.Error())
|
|
}
|
|
defer func(query *sql.Rows) {
|
|
_ = query.Close()
|
|
}(query)
|
|
}
|
|
return screens
|
|
}
|