tina4ruby 3.10.6 → 3.10.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/tina4/migration.rb +46 -14
- data/lib/tina4/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3001c964ea4a136f0dcc9af6766c2de0f98f323f8b9ff93deaab922477967c28
|
|
4
|
+
data.tar.gz: 2abc2dfa785de1cb2a503902cf009501df413af82e9054fc6d044cb4d689525a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d86f3ba17e99a972bdeee8d25a8afec34f12a89ab68ae9be21a5f1ed9bae6e3fa58b69083a8db25ee1ce17bfd1dc47790439f54196f848f6e95df0332d343eb1
|
|
7
|
+
data.tar.gz: '08ded077a54c8ed7c044878ccce8ba7aa099c855be82a3dcc93568ee7ab7eb32f429ae2877872e97754ead753cc2cb4ccc8a990b94703e77787163e20b30e4db'
|
data/lib/tina4/migration.rb
CHANGED
|
@@ -103,16 +103,36 @@ module Tina4
|
|
|
103
103
|
|
|
104
104
|
def ensure_tracking_table
|
|
105
105
|
unless @db.table_exists?(TRACKING_TABLE)
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
)
|
|
115
|
-
|
|
106
|
+
if firebird?
|
|
107
|
+
# Firebird: no AUTOINCREMENT, no TEXT type, use generator for IDs
|
|
108
|
+
begin
|
|
109
|
+
@db.execute("CREATE GENERATOR GEN_TINA4_MIGRATION_ID")
|
|
110
|
+
@db.execute("COMMIT") rescue nil
|
|
111
|
+
rescue
|
|
112
|
+
# Generator may already exist
|
|
113
|
+
end
|
|
114
|
+
@db.execute(<<~SQL)
|
|
115
|
+
CREATE TABLE #{TRACKING_TABLE} (
|
|
116
|
+
id INTEGER NOT NULL PRIMARY KEY,
|
|
117
|
+
migration_name VARCHAR(500) NOT NULL,
|
|
118
|
+
description VARCHAR(500) DEFAULT '',
|
|
119
|
+
batch INTEGER NOT NULL DEFAULT 1,
|
|
120
|
+
executed_at VARCHAR(50) DEFAULT CURRENT_TIMESTAMP,
|
|
121
|
+
passed INTEGER NOT NULL DEFAULT 1
|
|
122
|
+
)
|
|
123
|
+
SQL
|
|
124
|
+
else
|
|
125
|
+
@db.execute(<<~SQL)
|
|
126
|
+
CREATE TABLE #{TRACKING_TABLE} (
|
|
127
|
+
id INTEGER PRIMARY KEY,
|
|
128
|
+
migration_name VARCHAR(255) NOT NULL,
|
|
129
|
+
description VARCHAR(255) DEFAULT '',
|
|
130
|
+
batch INTEGER NOT NULL DEFAULT 1,
|
|
131
|
+
executed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
132
|
+
passed INTEGER NOT NULL DEFAULT 1
|
|
133
|
+
)
|
|
134
|
+
SQL
|
|
135
|
+
end
|
|
116
136
|
Tina4::Log.info("Created migrations tracking table")
|
|
117
137
|
end
|
|
118
138
|
end
|
|
@@ -309,10 +329,22 @@ module Tina4
|
|
|
309
329
|
# Extract description from filename (strip numeric prefix and extension)
|
|
310
330
|
stem = File.basename(name, File.extname(name))
|
|
311
331
|
desc = stem.sub(/\A\d+_/, "").tr("_", " ")
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
332
|
+
if firebird?
|
|
333
|
+
# Firebird: generate ID from sequence
|
|
334
|
+
row = @db.fetch_one(
|
|
335
|
+
"SELECT GEN_ID(GEN_TINA4_MIGRATION_ID, 1) AS NEXT_ID FROM RDB\$DATABASE"
|
|
336
|
+
)
|
|
337
|
+
next_id = row ? (row[:NEXT_ID] || row[:next_id] || 1).to_i : 1
|
|
338
|
+
@db.execute(
|
|
339
|
+
"INSERT INTO #{TRACKING_TABLE} (id, migration_name, description, batch, passed) VALUES (?, ?, ?, ?, ?)",
|
|
340
|
+
[next_id, name, desc, batch, passed]
|
|
341
|
+
)
|
|
342
|
+
else
|
|
343
|
+
@db.execute(
|
|
344
|
+
"INSERT INTO #{TRACKING_TABLE} (migration_name, description, batch, passed) VALUES (?, ?, ?, ?)",
|
|
345
|
+
[name, desc, batch, passed]
|
|
346
|
+
)
|
|
347
|
+
end
|
|
316
348
|
end
|
|
317
349
|
|
|
318
350
|
def remove_migration_record(name)
|
data/lib/tina4/version.rb
CHANGED