-
Notifications
You must be signed in to change notification settings - Fork 0
/
message_context.go
53 lines (46 loc) · 1.4 KB
/
message_context.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package dao
import (
"context"
"github.com/aattwwss/telegram-expense-bot/entity"
"github.com/georgysavva/scany/v2/pgxscan"
"github.com/jackc/pgx/v5/pgxpool"
)
type MessageContextDAO struct {
db *pgxpool.Pool
}
func NewMessageContextDao(db *pgxpool.Pool) MessageContextDAO {
return MessageContextDAO{db: db}
}
func (dao MessageContextDAO) Insert(ctx context.Context, messageContext entity.MessageContext) (int, error) {
var lastInsertId int
sql := `
INSERT INTO message_context ( message, chat_id, message_id, created_at )
VALUES ($1,$2,$3,$4) RETURNING id
`
err := dao.db.QueryRow(ctx, sql, messageContext.Message, messageContext.ChatId, messageContext.MessageId, messageContext.CreatedAt).Scan(&lastInsertId)
if err != nil {
return 0, err
}
return lastInsertId, nil
}
func (dao MessageContextDAO) GetById(ctx context.Context, id int) (*entity.MessageContext, error) {
var messageContextEntities []entity.MessageContext
sql := `
SELECT id, message, chat_id, message_id, created_at
FROM message_context
WHERE id = $1;
`
err := pgxscan.Select(ctx, dao.db, &messageContextEntities, sql, id)
if err != nil {
return nil, err
}
return &messageContextEntities[0], nil
}
func (dao MessageContextDAO) DeleteById(ctx context.Context, id int) error {
sql := `DELETE FROM message_context WHERE id = $1`
_, err := dao.db.Exec(ctx, sql, id)
if err != nil {
return err
}
return nil
}