51 lines
1.6 KiB
Go
51 lines
1.6 KiB
Go
// Package domain defines all the domain models
|
|
package domain
|
|
|
|
import "time"
|
|
|
|
// ListTrade es la representacion exportada de un trade de List Trading.
|
|
type ListTrade struct {
|
|
QuoteRequest FixMessageJSON `json:"quote_request"`
|
|
}
|
|
|
|
// FixMessageJSON es la representacion estructurada de un mensaje FIX para almacenamiento.
|
|
type FixMessageJSON struct {
|
|
Direction string `json:"direction"`
|
|
MsgType string `json:"msg_type"`
|
|
QuoteReqID string `json:"quote_req_id"`
|
|
Header map[string]any `json:"header"`
|
|
Body map[string]any `json:"body"`
|
|
Trailer map[string]any `json:"trailer"`
|
|
ReceiveTime time.Time `json:"receive_time"`
|
|
}
|
|
|
|
// Message es una fila de qfixdpl_messages, con la metadata del header FIX hoisted
|
|
// para que los consumidores puedan ordenar/filtrar sin parsear el JSON.
|
|
type Message struct {
|
|
ID string `json:"id"`
|
|
SenderCompID string `json:"sender_comp_id"`
|
|
MsgSeqNum int `json:"msg_seq_num"`
|
|
SendingTime time.Time `json:"sending_time"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
JMessage FixMessageJSON `json:"j_message"`
|
|
}
|
|
|
|
// LogEntry es el DTO para insertar/actualizar un log crudo en qfixdpl_logs.
|
|
type LogEntry struct {
|
|
QuoteReqID string
|
|
RawMsg string
|
|
}
|
|
|
|
// Logs es la respuesta del endpoint GET /trades/:quoteReqID/logs.
|
|
type Logs struct {
|
|
Entries []string `json:"entries"`
|
|
}
|
|
|
|
// PersistenceStore define la interfaz de persistencia.
|
|
type PersistenceStore interface {
|
|
SaveMessage(msg Message) error
|
|
SaveLog(entry LogEntry) error
|
|
GetTodayMessages() ([]Message, error)
|
|
GetLogsByQuoteReqID(quoteReqID string) (Logs, error)
|
|
}
|