feat: init commit

This commit is contained in:
krau
2024-10-10 23:31:01 +08:00
commit 1cbcebc148
31 changed files with 1673 additions and 0 deletions

33
dao/db.go Normal file
View File

@@ -0,0 +1,33 @@
package dao
import (
"os"
"path/filepath"
"github.com/glebarez/sqlite"
"github.com/krau/SaveAny-Bot/config"
"github.com/krau/SaveAny-Bot/logger"
"github.com/krau/SaveAny-Bot/model"
"gorm.io/gorm"
)
var db *gorm.DB
func Init() {
if err := os.MkdirAll(filepath.Dir(config.Cfg.DB.Path), 755); err != nil {
logger.L.Fatal("Failed to create data directory: ", err)
os.Exit(1)
}
var err error
db, err = gorm.Open(sqlite.Open(config.Cfg.DB.Path), &gorm.Config{})
if err != nil {
logger.L.Fatal("Failed to open database: ", err)
os.Exit(1)
}
logger.L.Debug("Database connected")
db.AutoMigrate(&model.ReceivedFile{}, &model.User{})
for _, admin := range config.Cfg.Telegram.Admins {
CreateUser(int64(admin))
}
}

55
dao/file.go Normal file
View File

@@ -0,0 +1,55 @@
package dao
import "github.com/krau/SaveAny-Bot/model"
func AddReceivedFile(receivedFile *model.ReceivedFile) error {
return db.Create(receivedFile).Error
}
func GetReceivedFileByFileID(fileID string) (*model.ReceivedFile, error) {
var receivedFile model.ReceivedFile
err := db.Where("file_id = ?", fileID).First(&receivedFile).Error
if err != nil {
return nil, err
}
return &receivedFile, nil
}
func GetReceivedFileByFileUniqueID(fileUniqueID string) (*model.ReceivedFile, error) {
var receivedFile model.ReceivedFile
err := db.Where("file_unique_id = ?", fileUniqueID).First(&receivedFile).Error
if err != nil {
return nil, err
}
return &receivedFile, nil
}
func GetReceivedFileByChatAndMessageID(chatID int64, messageID int) (*model.ReceivedFile, error) {
var receivedFile model.ReceivedFile
err := db.Where("chat_id = ? AND message_id = ?", chatID, messageID).First(&receivedFile).Error
if err != nil {
return nil, err
}
return &receivedFile, nil
}
func GetReceivedFilesByMediaGroupID(mediaGroupID string) ([]model.ReceivedFile, error) {
var receivedFiles []model.ReceivedFile
err := db.Where("media_group_id = ?", mediaGroupID).Find(&receivedFiles).Error
if err != nil {
return nil, err
}
return receivedFiles, nil
}
func UpdateReceivedFile(receivedFile *model.ReceivedFile) error {
return db.Save(receivedFile).Error
}
func DeleteReceivedFileByFileID(fileID string) error {
return db.Where("file_id = ?", fileID).Delete(&model.ReceivedFile{}).Error
}
func DeleteReceivedFileByFileUniqueID(fileUniqueID string) error {
return db.Where("file_unique_id = ?", fileUniqueID).Delete(&model.ReceivedFile{}).Error
}

22
dao/user.go Normal file
View File

@@ -0,0 +1,22 @@
package dao
import (
"github.com/krau/SaveAny-Bot/model"
)
func CreateUser(userID int64) error {
if _, err := GetUserByUserID(userID); err == nil {
return nil
}
return db.Create(&model.User{UserID: userID}).Error
}
func GetUserByUserID(userID int64) (*model.User, error) {
var user model.User
err := db.Where("user_id = ?", userID).First(&user).Error
return &user, err
}
func UpdateUser(user *model.User) error {
return db.Save(user).Error
}