create fake database until real DB is implemented
This commit is contained in:
62
api/db.go
62
api/db.go
@@ -1,21 +1,71 @@
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
import "errors"
|
import (
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"git.dubyatp.xyz/chat-api-server/db"
|
||||||
|
)
|
||||||
|
|
||||||
func dbGetUser(id int64) (*User, error) {
|
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 {
|
for _, u := range users {
|
||||||
if u.ID == id {
|
user := u.(map[string]interface{})
|
||||||
return u, nil
|
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")
|
return nil, errors.New("User not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
func dbGetMessage(id string) (*Message, error) {
|
func dbGetMessage(id string) (*Message, error) {
|
||||||
for _, a := range messages {
|
data := db.ExecDB("messages")
|
||||||
if a.ID == id {
|
if data == nil {
|
||||||
return a, 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 {
|
||||||
|
return &Message{
|
||||||
|
ID: message["ID"].(string),
|
||||||
|
UserID: int64(message["UserID"].(float64)),
|
||||||
|
Body: message["Body"].(string),
|
||||||
|
Timestamp: int64(message["Timestamp"].(float64)),
|
||||||
|
}, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil, errors.New("Message not found")
|
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{})
|
||||||
|
result = append(result, &Message{
|
||||||
|
ID: message["ID"].(string),
|
||||||
|
UserID: int64(message["UserID"].(float64)),
|
||||||
|
Body: message["Body"].(string),
|
||||||
|
Timestamp: int64(message["Timestamp"].(float64)),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if len(result) == 0 {
|
||||||
|
return nil, errors.New("no messages found")
|
||||||
|
}
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
@@ -43,7 +43,12 @@ func GetMessage(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func ListMessages(w http.ResponseWriter, r *http.Request) {
|
func ListMessages(w http.ResponseWriter, r *http.Request) {
|
||||||
if err := render.RenderList(w, r, NewMessageListResponse(messages)); err != nil {
|
dbMessages, err := dbGetAllMessages()
|
||||||
|
if err != nil {
|
||||||
|
render.Render(w, r, ErrRender(err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := render.RenderList(w, r, NewMessageListResponse(dbMessages)); err != nil {
|
||||||
render.Render(w, r, ErrRender(err))
|
render.Render(w, r, ErrRender(err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
47
db/fake_db.go
Normal file
47
db/fake_db.go
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
package db
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ExecDB(db_name string) map[string]interface{} {
|
||||||
|
var result map[string]interface{}
|
||||||
|
|
||||||
|
if db_name == "users" {
|
||||||
|
users_db, err := os.Open("./test_data/users.json")
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
fmt.Println("Successfully opened Users DB")
|
||||||
|
defer users_db.Close()
|
||||||
|
|
||||||
|
byteValue, _ := io.ReadAll(users_db)
|
||||||
|
var users []interface{}
|
||||||
|
json.Unmarshal(byteValue, &users)
|
||||||
|
result = map[string]interface{}{"users": users}
|
||||||
|
|
||||||
|
} else if db_name == "messages" {
|
||||||
|
messages_db, err := os.Open("./test_data/messages.json")
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
fmt.Println("Successfully opened Messages DB")
|
||||||
|
defer messages_db.Close()
|
||||||
|
|
||||||
|
byteValue, _ := io.ReadAll(messages_db)
|
||||||
|
var messages []interface{}
|
||||||
|
json.Unmarshal(byteValue, &messages)
|
||||||
|
result = map[string]interface{}{"messages": messages}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
fmt.Println("Invalid DB name")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
26
test_data/messages.json
Normal file
26
test_data/messages.json
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": "1",
|
||||||
|
"UserID": 1,
|
||||||
|
"Body": "hello",
|
||||||
|
"Timestamp": 1234567890
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "2",
|
||||||
|
"UserID": 2,
|
||||||
|
"Body": "world",
|
||||||
|
"Timestamp": 1234567890
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "3",
|
||||||
|
"UserID": 1,
|
||||||
|
"Body": "abababa",
|
||||||
|
"Timestamp": 1234567890
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": "4",
|
||||||
|
"UserID": 2,
|
||||||
|
"Body": "bitch",
|
||||||
|
"Timestamp": 1234567890
|
||||||
|
}
|
||||||
|
]
|
10
test_data/users.json
Normal file
10
test_data/users.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": 1,
|
||||||
|
"Name": "duby"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 2,
|
||||||
|
"Name": "astolfo"
|
||||||
|
}
|
||||||
|
]
|
Reference in New Issue
Block a user