save servers to pocketbase by user id

This commit is contained in:
Kristian 2023-10-06 23:02:05 +02:00
parent 34f3bcac3d
commit d971843fee
4 changed files with 47 additions and 0 deletions

View File

@ -44,6 +44,7 @@ func Run() {
var conversationHistoryMap = make(map[string][]openai.ChatCompletionMessage)
var sshConnections = make(map[string]*SSHConnection)
func hasAdminRole(roles []string) bool {
for _, role := range roles {
if role == AllowedUserID {
@ -129,6 +130,18 @@ func newMessage(discord *discordgo.Session, message *discordgo.MessageCreate) {
// Store the SSH connection for later use
sshConnections[message.Author.ID] = sshConn
// Save server information to PocketBase
serverInfo := &pb.ServerInfo{
UserID: message.Author.ID,
ConnectionDetails: connectionDetails,
}
err = pb.CreateRecord("servers", serverInfo)
if err != nil {
log.Error(err)
discord.ChannelMessageSend(message.ChannelID, "Error saving server information.")
return
}
discord.ChannelMessageSend(message.ChannelID, "Connected to remote server!")
} else {
discord.ChannelMessageSend(message.ChannelID, "You are not authorized to use this command.")

View File

@ -14,6 +14,11 @@ var (
once sync.Once
)
type ServerInfo struct {
UserID string
ConnectionDetails string
}
// Init initializes the PocketBase app
func Init() {
once.Do(func() {
@ -40,3 +45,32 @@ func GetRecordById(collectionID string, recordID string) (*models.Record, error)
return record, nil
}
func CreateRecord(collectionName string, record *ServerInfo) error {
// Find the collection
collection, err := app.Dao().FindCollectionByNameOrId(collectionName)
if err != nil {
log.Error(err)
return err
}
// Create a new record
newRecord := models.NewRecord(collection)
// Convert ServerInfo to a map
recordMap := map[string]interface{}{
"UserID": record.UserID,
"ConnectionDetails": record.ConnectionDetails,
}
// Bulk load with record.Load(map[string]interface{})
newRecord.Load(recordMap)
// Save the record
if err := app.Dao().SaveRecord(newRecord); err != nil {
log.Error(err)
return err
}
return nil
}

Binary file not shown.

Binary file not shown.