diff options
| author | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2025-01-03 01:47:07 -0800 |
|---|---|---|
| committer | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2025-01-03 01:47:07 -0800 |
| commit | f163a242792cd325c9414587d52f3d8584f28df1 (patch) | |
| tree | b57ad121cc3f4ffc2bc55f4d63bfaaf6026dd239 /database/messages.go | |
| download | phoneof-f163a242792cd325c9414587d52f3d8584f28df1.tar.gz phoneof-f163a242792cd325c9414587d52f3d8584f28df1.zip | |
initial commit
Diffstat (limited to 'database/messages.go')
| -rw-r--r-- | database/messages.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/database/messages.go b/database/messages.go new file mode 100644 index 0000000..7646b50 --- /dev/null +++ b/database/messages.go @@ -0,0 +1,49 @@ +package database + +import ( + "database/sql" + "time" +) + +type Message struct { + Id string + FrenId string + Message string + Time time.Time + FrenSent bool +} + +type ListMessageQuery struct { + FrenId string + Before time.Time + Limit int +} + +func ListMessages(dbConn *sql.DB, query ListMessageQuery) ([]Message, error) { + rows, err := dbConn.Query(`SELECT id, fren_id, message, time, fren_sent FROM messages WHERE fren_id = ? AND time < ? ORDER BY time ASC LIMIT ?;`, query.FrenId, query.Before, query.Limit) + if err != nil { + return nil, err + } + defer rows.Close() + + messages := []Message{} + for rows.Next() { + var message Message + err := rows.Scan(&message.Id, &message.FrenId, &message.Message, &message.Time, &message.FrenSent) + if err != nil { + return nil, err + } + messages = append(messages, message) + } + + return messages, nil +} + +func SaveMessage(db *sql.DB, message *Message) (*Message, error) { + _, err := db.Exec("INSERT OR REPLACE INTO messages (id, fren_id, message, time, fren_sent) VALUES (?, ?, ?, ?, ?)", message.Id, message.FrenId, message.Message, message.Time, message.FrenSent) + + if err != nil { + return nil, err + } + return message, nil +} |
