summaryrefslogtreecommitdiffhomepage
path: root/internal/message
diff options
context:
space:
mode:
authoradamdottv <[email protected]>2025-05-12 13:01:59 -0500
committeradamdottv <[email protected]>2025-05-12 13:01:59 -0500
commit8270a1e4b133b44b4b68c8b52567200fc69343e6 (patch)
tree73369cc977081f3b5c60d14d27a75aa6149fae4d /internal/message
parent7f9c992993b56c0c3f2895632d81b64f209a4d94 (diff)
downloadopencode-8270a1e4b133b44b4b68c8b52567200fc69343e6.tar.gz
opencode-8270a1e4b133b44b4b68c8b52567200fc69343e6.zip
chore: cleanup
Diffstat (limited to 'internal/message')
-rw-r--r--internal/message/message.go45
1 files changed, 3 insertions, 42 deletions
diff --git a/internal/message/message.go b/internal/message/message.go
index 417121750..4c6726ca1 100644
--- a/internal/message/message.go
+++ b/internal/message/message.go
@@ -286,53 +286,14 @@ func (s *service) fromDBItem(item db.Message) (Message, error) {
return Message{}, fmt.Errorf("unmarshallParts for message ID %s: %w. Raw parts: %s", item.ID, err, item.Parts)
}
- // DB stores created_at, updated_at, finished_at as Unix seconds.
- // Go struct Message stores them as Unix milliseconds.
- createdAtMillis := item.CreatedAt * 1000
- updatedAtMillis := item.UpdatedAt * 1000
-
msg := Message{
ID: item.ID,
SessionID: item.SessionID,
Role: MessageRole(item.Role),
Parts: parts,
Model: models.ModelID(item.Model.String),
- CreatedAt: createdAtMillis,
- UpdatedAt: updatedAtMillis,
- }
-
- // Ensure Finish part in msg.Parts reflects the item.FinishedAt state
- // if item.FinishedAt is the source of truth for the "overall message finished time".
- // The `unmarshallParts` should already create a Finish part if it's in the JSON.
- // This logic reconciles the DB column with the JSON parts.
- var existingFinishPart *Finish
- var finishPartIndex = -1
-
- for i, p := range msg.Parts {
- if fp, ok := p.(Finish); ok {
- existingFinishPart = &fp
- finishPartIndex = i
- break
- }
- }
-
- if item.FinishedAt.Valid && item.FinishedAt.Int64 > 0 {
- dbFinishTimeMillis := item.FinishedAt.Int64 * 1000
- if existingFinishPart != nil {
- // If a Finish part exists from JSON, update its time if DB's time is different.
- // This assumes DB `finished_at` is the ultimate source of truth for when the message truly finished.
- if existingFinishPart.Time != dbFinishTimeMillis {
- slog.Debug("Aligning Finish part time with DB finished_at", "message_id", msg.ID, "json_finish_time", existingFinishPart.Time, "db_finish_time", dbFinishTimeMillis)
- existingFinishPart.Time = dbFinishTimeMillis
- msg.Parts[finishPartIndex] = *existingFinishPart
- }
- } else {
- // If no Finish part in JSON but DB says it's finished, add one.
- // We might not know the original FinishReason here, so use a sensible default or leave it to be set by Update.
- // This scenario should be less common if `Update` always ensures a Finish part for finished messages.
- slog.Debug("Synthesizing Finish part from DB finished_at", "message_id", msg.ID)
- msg.Parts = append(msg.Parts, Finish{Reason: FinishReasonEndTurn, Time: dbFinishTimeMillis})
- }
+ CreatedAt: item.CreatedAt * 1000,
+ UpdatedAt: item.UpdatedAt * 1000,
}
return msg, nil
@@ -366,7 +327,7 @@ func DeleteSessionMessages(ctx context.Context, sessionID string) error {
return GetService().DeleteSessionMessages(ctx, sessionID)
}
-func SubscribeToEvents(ctx context.Context) <-chan pubsub.Event[Message] {
+func Subscribe(ctx context.Context) <-chan pubsub.Event[Message] {
return GetService().Subscribe(ctx)
}