2026-04-06 00:20:51 -05:00

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
}