Skip to content

Commit 066577f

Browse files
authored
use timestamptz for journaled outbox event timestamps (#57)
1 parent a6b3970 commit 066577f

6 files changed

Lines changed: 19 additions & 23 deletions

File tree

Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: .
33
specs:
4-
journaled (6.2.0)
4+
journaled (6.2.1)
55
activejob
66
activerecord
77
activesupport

db/migrate/2_create_journaled_events.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
class CreateJournaledEvents < ActiveRecord::Migration[7.2]
44
def change
55
# UUID v7 primary key (auto-generated by database using uuid_generate_v7())
6-
create_table :journaled_outbox_events, id: :uuid, default: -> { "uuid_generate_v7()" } do |t|
6+
create_table :journaled_outbox_events, id: :uuid, default: -> { "uuid_generate_v7()" } do |t| # rubocop:disable Rails/CreateTableWithTimestamps
77
# Event identification and data
88
t.string :event_type, null: false
99
t.jsonb :event_data, null: false
@@ -12,8 +12,8 @@ def change
1212

1313
t.text :failure_reason
1414

15-
t.datetime :failed_at
16-
t.datetime :created_at, null: false, default: -> { "clock_timestamp()" }
15+
t.column :failed_at, :timestamptz
16+
t.column :created_at, :timestamptz, null: false, default: -> { "clock_timestamp()" }
1717
end
1818

1919
# Index for querying failed events

gemfiles/rails_7_2.gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: ..
33
specs:
4-
journaled (6.2.0)
4+
journaled (6.2.1)
55
activejob
66
activerecord
77
activesupport

gemfiles/rails_8_0.gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: ..
33
specs:
4-
journaled (6.2.0)
4+
journaled (6.2.1)
55
activejob
66
activerecord
77
activesupport

lib/journaled/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# frozen_string_literal: true
22

33
module Journaled
4-
VERSION = "6.2.0"
4+
VERSION = "6.2.1"
55
end

spec/dummy/db/schema.rb

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,21 +38,17 @@
3838
t.string "other_column"
3939
end
4040

41-
# Use uuid_generate_v7() for PostgreSQL, nil for SQLite (outbox tests require PostgreSQL)
42-
id_default = if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
43-
-> { "uuid_generate_v7()" }
44-
else
45-
nil
46-
end
47-
48-
create_table "journaled_outbox_events", id: :uuid, default: id_default, force: :cascade do |t|
49-
t.string "event_type", null: false
50-
t.text "event_data", null: false
51-
t.string "partition_key", null: false
52-
t.string "stream_name", null: false
53-
t.text "failure_reason"
54-
t.datetime "failed_at"
55-
t.datetime "created_at", null: false, default: -> { "clock_timestamp()" }
56-
t.index ["failed_at"], name: "index_journaled_outbox_events_on_failed_at"
41+
# Outbox events table is PostgreSQL-only (uses jsonb, timestamptz, uuid_generate_v7)
42+
if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
43+
create_table "journaled_outbox_events", id: :uuid, default: -> { "uuid_generate_v7()" }, force: :cascade do |t|
44+
t.string "event_type", null: false
45+
t.jsonb "event_data", null: false
46+
t.string "partition_key", null: false
47+
t.string "stream_name", null: false
48+
t.text "failure_reason"
49+
t.timestamptz "failed_at"
50+
t.timestamptz "created_at", null: false, default: -> { "clock_timestamp()" }
51+
t.index ["failed_at"], name: "index_journaled_outbox_events_on_failed_at"
52+
end
5753
end
5854
end

0 commit comments

Comments
 (0)