egutierrez
416b15786d
feat(infra): sqlite_apply_versioned_migrations + dedup fn_operations + registry
Promueve patron versionado (schema_migrations + tx por archivo) al registry
como sqlite_apply_versioned_migrations_go_infra. Migra fn_operations/migrate.go
y registry/migrate.go al consumirla. ~200 LOC duplicadas eliminadas.
- functions/infra/sqlite_apply_versioned_migrations.{go,md,_test.go}: nueva,
5/5 tests pass. Generaliza fs.FS + dir param (fn_operations usaba embed.FS
hardcoded). Distinta de sqlite_apply_migrations_go_infra (naive split-by-`;`,
idempotent-by-error) — esta hace tracking explicito + transactions.
- fn_operations/migrate.go: 111 LOC -> 17. Wrapper sobre infra.ApplyVersionedMigrations.
- registry/migrate.go: idem. Mismo patron copy-paste, ahora unificado.
Smoke: ./fn ops init crea operations.db con schema_migrations poblada.
fn_operations + registry tests: PASS. fn index registra nueva fn (1091 total).
2026-05-09 12:50:51 +02:00
..
2026-05-07 01:42:10 +02:00
2026-05-07 01:42:10 +02:00
2026-05-07 01:42:10 +02:00
2026-05-09 03:57:51 +02:00
2026-05-09 03:57:51 +02:00
2026-05-07 01:42:10 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:49 +02:00
2026-04-02 22:03:49 +02:00
2026-04-05 18:45:16 +02:00
2026-04-13 02:01:43 +02:00
2026-04-13 02:01:43 +02:00
2026-04-13 02:01:43 +02:00
2026-04-13 02:01:43 +02:00
2026-04-13 02:01:50 +02:00
2026-04-13 02:01:50 +02:00
2026-04-13 02:01:50 +02:00
2026-04-13 02:01:50 +02:00
2026-04-13 02:01:50 +02:00
2026-04-13 02:01:50 +02:00
2026-04-13 02:01:43 +02:00
2026-04-13 02:01:43 +02:00
2026-04-13 02:01:43 +02:00
2026-04-13 02:01:43 +02:00
2026-04-13 02:01:43 +02:00
2026-04-13 02:01:43 +02:00
2026-04-13 02:01:43 +02:00
2026-03-28 23:23:00 +01:00
2026-04-05 17:11:12 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-18 17:15:33 +02:00
2026-04-18 17:15:33 +02:00
2026-04-18 17:15:21 +02:00
2026-04-18 17:15:21 +02:00
2026-04-18 17:15:33 +02:00
2026-04-18 17:15:33 +02:00
2026-04-18 17:15:33 +02:00
2026-04-18 17:15:33 +02:00
2026-04-18 17:15:21 +02:00
2026-04-18 17:15:21 +02:00
2026-04-18 17:15:33 +02:00
2026-04-18 17:15:33 +02:00
2026-04-18 17:15:21 +02:00
2026-04-18 17:15:33 +02:00
2026-04-18 17:15:33 +02:00
2026-04-18 17:15:33 +02:00
2026-04-18 17:15:33 +02:00
2026-04-18 17:15:21 +02:00
2026-04-18 17:17:42 +02:00
2026-04-18 17:15:33 +02:00
2026-04-18 17:15:33 +02:00
2026-04-12 13:05:13 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:17 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 17:29:52 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 17:13:45 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 17:13:45 +01:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:55 +02:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-13 02:01:50 +02:00
2026-04-13 02:01:50 +02:00
2026-04-13 02:01:50 +02:00
2026-04-02 22:03:49 +02:00
2026-04-02 22:03:49 +02:00
2026-04-05 18:45:16 +02:00
2026-04-13 02:01:13 +02:00
2026-04-13 02:01:13 +02:00
2026-04-13 02:01:18 +02:00
2026-04-13 02:01:13 +02:00
2026-04-13 02:01:13 +02:00
2026-04-13 02:01:18 +02:00
2026-04-13 02:01:13 +02:00
2026-04-13 02:01:13 +02:00
2026-04-13 02:01:13 +02:00
2026-04-13 02:01:13 +02:00
2026-04-13 02:01:13 +02:00
2026-04-13 02:01:50 +02:00
2026-04-13 02:01:50 +02:00
2026-04-13 02:01:50 +02:00
2026-04-13 02:01:50 +02:00
2026-04-13 02:01:50 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:12:05 +02:00
2026-04-18 17:12:05 +02:00
2026-04-18 17:12:05 +02:00
2026-04-18 17:12:05 +02:00
2026-04-18 17:12:05 +02:00
2026-04-18 17:12:05 +02:00
2026-05-07 01:42:10 +02:00
2026-05-07 01:42:10 +02:00
2026-05-07 01:42:10 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-13 01:57:39 +02:00
2026-04-13 01:57:39 +02:00
2026-04-13 01:57:39 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:34 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:39 +02:00
2026-04-13 01:57:39 +02:00
2026-04-13 01:57:39 +02:00
2026-04-13 01:57:34 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-13 01:57:34 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-04-13 01:57:47 +02:00
2026-05-09 03:41:58 +02:00
2026-05-09 03:41:58 +02:00
2026-05-09 03:41:58 +02:00
2026-05-07 01:42:10 +02:00
2026-05-07 01:42:10 +02:00
2026-05-07 01:42:10 +02:00
2026-05-09 03:41:58 +02:00
2026-05-09 03:41:58 +02:00
2026-05-09 03:41:58 +02:00
2026-05-09 03:41:58 +02:00
2026-05-09 03:41:58 +02:00
2026-05-09 03:41:58 +02:00
2026-03-28 23:23:00 +01:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-18 17:37:19 +02:00
2026-04-18 17:39:00 +02:00
2026-04-18 17:39:00 +02:00
2026-04-18 17:39:00 +02:00
2026-04-18 17:44:04 +02:00
2026-04-18 17:44:04 +02:00
2026-04-18 17:44:04 +02:00
2026-04-18 17:39:00 +02:00
2026-04-18 17:39:00 +02:00
2026-04-18 17:39:00 +02:00
2026-04-18 17:14:29 +02:00
2026-04-18 17:14:29 +02:00
2026-04-18 17:14:19 +02:00
2026-04-18 17:14:29 +02:00
2026-04-18 17:14:29 +02:00
2026-04-18 17:14:29 +02:00
2026-04-18 17:14:29 +02:00
2026-04-18 17:14:19 +02:00
2026-04-18 17:14:29 +02:00
2026-04-18 17:14:29 +02:00
2026-04-18 17:14:36 +02:00
2026-04-18 17:14:36 +02:00
2026-04-18 17:14:23 +02:00
2026-04-18 17:14:23 +02:00
2026-04-18 17:14:41 +02:00
2026-04-18 17:14:23 +02:00
2026-04-18 17:14:23 +02:00
2026-04-18 17:14:19 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 23:23:00 +01:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-04-13 02:01:40 +02:00
2026-04-13 02:01:40 +02:00
2026-04-13 02:01:40 +02:00
2026-04-13 02:07:27 +02:00
2026-04-13 02:01:40 +02:00
2026-04-13 02:02:27 +02:00
2026-04-13 02:07:27 +02:00
2026-04-13 02:01:34 +02:00
2026-04-13 02:01:34 +02:00
2026-04-13 02:02:27 +02:00
2026-04-13 02:07:27 +02:00
2026-04-13 02:01:40 +02:00
2026-04-13 02:02:27 +02:00
2026-04-13 02:07:27 +02:00
2026-04-13 02:01:40 +02:00
2026-04-13 02:02:27 +02:00
2026-04-13 02:01:34 +02:00
2026-04-13 02:01:34 +02:00
2026-04-13 02:02:27 +02:00
2026-04-13 02:01:34 +02:00
2026-04-01 20:55:08 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:08 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:08 +02:00
2026-04-05 18:45:16 +02:00
2026-05-07 01:42:10 +02:00
2026-05-07 01:42:10 +02:00
2026-05-07 01:42:10 +02:00
2026-04-18 17:41:42 +02:00
2026-04-18 17:41:42 +02:00
2026-04-18 17:41:42 +02:00
2026-04-18 17:41:42 +02:00
2026-04-18 17:41:42 +02:00
2026-04-18 17:41:42 +02:00
2026-04-18 17:41:42 +02:00
2026-04-18 17:41:42 +02:00
2026-04-18 17:41:42 +02:00
2026-04-18 17:37:19 +02:00
2026-04-18 17:37:19 +02:00
2026-04-01 20:55:08 +02:00
2026-04-01 20:55:08 +02:00
2026-04-05 18:45:16 +02:00
2026-04-18 17:39:00 +02:00
2026-04-18 17:39:00 +02:00
2026-04-18 17:39:00 +02:00
2026-04-18 17:39:00 +02:00
2026-04-18 17:39:00 +02:00
2026-04-18 17:39:00 +02:00
2026-05-07 01:42:10 +02:00
2026-05-07 01:42:10 +02:00
2026-05-07 01:42:10 +02:00
2026-04-13 02:02:51 +02:00
2026-04-13 02:02:51 +02:00
2026-04-18 17:37:19 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 13:05:13 +02:00
2026-04-28 18:41:49 +02:00
2026-04-12 13:05:13 +02:00
2026-04-12 13:05:13 +02:00
2026-04-28 18:41:49 +02:00
2026-04-12 13:05:13 +02:00
2026-04-28 18:41:49 +02:00
2026-04-12 13:05:13 +02:00
2026-04-18 17:14:25 +02:00
2026-04-18 17:11:22 +02:00
2026-04-18 17:11:22 +02:00
2026-04-18 17:14:25 +02:00
2026-04-18 17:14:25 +02:00
2026-04-18 17:14:25 +02:00
2026-04-18 17:14:25 +02:00
2026-04-18 17:14:25 +02:00
2026-04-18 17:14:25 +02:00
2026-04-18 17:14:25 +02:00
2026-04-18 17:11:22 +02:00
2026-04-18 17:11:22 +02:00
2026-04-18 17:14:25 +02:00
2026-04-18 17:11:22 +02:00
2026-04-18 17:11:22 +02:00
2026-04-18 17:14:25 +02:00
2026-04-18 17:11:22 +02:00
2026-04-18 17:11:22 +02:00
2026-04-18 17:11:22 +02:00
2026-04-18 17:44:04 +02:00
2026-04-18 17:44:04 +02:00
2026-04-18 17:44:04 +02:00
2026-04-18 17:44:04 +02:00
2026-04-18 17:44:04 +02:00
2026-04-18 17:44:04 +02:00
2026-04-18 17:37:19 +02:00
2026-04-18 17:10:31 +02:00
2026-04-18 17:17:19 +02:00
2026-04-18 17:17:19 +02:00
2026-04-18 17:17:19 +02:00
2026-04-18 17:17:19 +02:00
2026-04-18 17:17:19 +02:00
2026-04-18 17:17:19 +02:00
2026-04-01 20:55:24 +02:00
2026-04-05 18:45:16 +02:00
2026-05-07 01:42:10 +02:00
2026-05-07 01:42:10 +02:00
2026-05-07 01:42:10 +02:00
2026-04-18 17:40:13 +02:00
2026-04-18 17:40:13 +02:00
2026-04-18 17:40:13 +02:00
2026-04-18 17:40:13 +02:00
2026-04-18 17:40:13 +02:00
2026-04-18 17:40:13 +02:00
2026-04-18 17:40:13 +02:00
2026-04-18 17:37:19 +02:00
2026-04-28 18:41:56 +02:00
2026-04-28 18:41:56 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-13 02:01:18 +02:00
2026-04-13 02:01:13 +02:00
2026-04-13 02:01:13 +02:00
2026-04-13 02:01:18 +02:00
2026-04-13 02:01:13 +02:00
2026-04-13 02:01:13 +02:00
2026-05-06 15:54:01 +02:00
2026-05-06 15:54:01 +02:00
2026-05-06 15:54:01 +02:00
2026-05-09 03:41:58 +02:00
2026-05-09 03:41:58 +02:00
2026-05-09 03:41:58 +02:00
2026-05-09 12:50:51 +02:00
2026-05-09 12:50:51 +02:00
2026-05-09 12:50:51 +02:00
2026-05-09 03:41:58 +02:00
2026-05-09 03:41:58 +02:00
2026-05-09 03:41:58 +02:00
2026-04-02 15:32:40 +02:00
2026-04-05 18:45:16 +02:00
2026-04-18 17:10:28 +02:00
2026-04-18 17:25:03 +02:00
2026-04-18 17:25:03 +02:00
2026-04-18 17:25:03 +02:00
2026-04-18 17:25:03 +02:00
2026-04-18 17:25:03 +02:00
2026-04-18 17:25:03 +02:00
2026-04-18 17:25:03 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-18 17:10:31 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:15:39 +02:00
2026-04-18 17:10:31 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-01 20:55:24 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:24 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:24 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:24 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-18 17:29:37 +02:00
2026-04-18 17:29:37 +02:00
2026-04-18 17:10:28 +02:00
2026-04-18 17:29:37 +02:00
2026-04-18 17:29:37 +02:00
2026-04-18 17:29:37 +02:00
2026-04-18 17:29:37 +02:00
2026-04-18 17:10:28 +02:00
2026-04-18 17:29:37 +02:00
2026-04-18 17:29:37 +02:00
2026-04-18 17:29:37 +02:00
2026-04-18 17:29:37 +02:00
2026-04-18 17:29:37 +02:00