package api import ( "errors" "fmt" "time" "git.dubyatp.xyz/chat-api-server/db" ) func dbGetUser(id int64) (*User, error) { data := db.ExecDB("users") if data == nil { return nil, errors.New("failed to load users database") } users := data["users"].([]interface{}) for _, u := range users { user := u.(map[string]interface{}) if int64(user["ID"].(float64)) == id { return &User{ ID: int64(user["ID"].(float64)), Name: user["Name"].(string), }, nil } } return nil, errors.New("User not found") } func dbGetMessage(id string) (*Message, error) { data := db.ExecDB("messages") if data == nil { return nil, errors.New("failed to load messages database") } messages := data["messages"].([]interface{}) for _, m := range messages { message := m.(map[string]interface{}) if message["ID"].(string) == id { timestamp, err := time.Parse(time.RFC3339, message["Timestamp"].(string)) if err != nil { return nil, fmt.Errorf("failed to parse timestamp: %v", err) } return &Message{ ID: message["ID"].(string), UserID: int64(message["UserID"].(float64)), Body: message["Body"].(string), Timestamp: timestamp, }, nil } } return nil, errors.New("Message not found") } func dbGetAllMessages() ([]*Message, error) { data := db.ExecDB("messages") //println(data) if data == nil { return nil, errors.New("failed to load messages database") } messages := data["messages"].([]interface{}) var result []*Message for _, m := range messages { message := m.(map[string]interface{}) timestamp, err := time.Parse(time.RFC3339, message["Timestamp"].(string)) if err != nil { return nil, fmt.Errorf("failed to parse timestamp: %v", err) } result = append(result, &Message{ ID: message["ID"].(string), UserID: int64(message["UserID"].(float64)), Body: message["Body"].(string), Timestamp: timestamp, }) } if len(result) == 0 { return nil, errors.New("no messages found") } return result, nil } func dbAddUser(id int64, name string) error { user := map[string]interface{}{ "ID": float64(id), // JSON numbers are float64 by default "Name": name, } return db.AddUser(user) } func dbAddMessage(message *Message) error { dbMessage := map[string]interface{}{ "ID": message.ID, "UserID": message.UserID, // JSON numbers are float64 "Body": message.Body, "Timestamp": message.Timestamp, } return db.AddMessage(dbMessage) } func dbDeleteMessage(id string) error { return db.DeleteMessage(id) }