Charles GTE
ff47024d9a
fix: mysql localhost
2026-08-21 19:05:47 +02:00
Charles GTE
90941ea67d
fix
2026-08-20 13:41:14 +02:00
charles-gauthereau
cf9a59a138
fix: config.rs
2026-08-18 13:07:22 +02:00
charles-gauthereau
2464f6dfb0
Merge branch 'main' into feat/dashboard-databases
...
# Conflicts:
# docker-compose.yml
# src/services/config.rs
2026-08-18 13:05:56 +02:00
charles-gauthereau
d83511cb64
fix: mongodb cloud cluster issue
2026-08-17 10:52:21 +02:00
charles-gauthereau
ca294e968c
fix
2026-08-13 22:02:17 +02:00
charles-gauthereau
1be88ffdb9
Merge branch 'main' into feat/dashboard-databases
...
# Conflicts:
# docker-compose.yml
2026-08-13 21:56:38 +02:00
charles-gauthereau
9d393a96a4
fix
2026-08-13 21:55:59 +02:00
charles-gauthereau
044bf80633
feat(agent): ingest dashboard databases via merged cycle + cache
2026-08-13 18:47:18 +02:00
charles-gauthereau
0a6eb6db22
feat(dashboard_config): atomic cache load/persist
2026-08-13 18:40:56 +02:00
charles-gauthereau
b26ff81889
feat(dashboard_config): merge (dashboard-wins) + collect_configs
2026-08-13 18:39:54 +02:00
charles-gauthereau
4e2f29f4ca
feat(status): decrypt dashboard config_ciphertext into resolved_config
2026-08-13 18:38:15 +02:00
charles-gauthereau
d1c8df4cac
refactor(config): extract build_config, add load_optional + Serialize
2026-08-13 18:35:52 +02:00
Charles GTE
23d6822ddc
fix: s3 logs
2026-07-26 11:04:07 +02:00
Charles GTE
6548140eaf
fix: windows build
2026-07-25 15:19:46 +02:00
charles-gauthereau
80b1c0dac0
fix: firebird with -g for gbak
2026-07-24 18:29:04 +02:00
charles-gauthereau
9790837200
fix: postgres
2026-07-23 17:14:27 +02:00
charles-gauthereau
8827234344
refactor(postgres): split restore into restore/ module (run, prepare, command, toc)
2026-07-23 16:40:56 +02:00
charles-gauthereau
b3417304bb
fix(postgres): match real pg_restore -l schema line in toc_creates_public_schema
2026-07-23 10:06:01 +02:00
charles-gauthereau
5f4006b1ca
feat(postgres): sniff dump format by magic bytes
2026-07-23 09:56:46 +02:00
charles-gauthereau
f24b1ec3e4
feat(postgres): wire clean_mode=drop_database with preflight gate
2026-07-23 09:51:49 +02:00
charles-gauthereau
bb1b16d0f2
feat(postgres): add drop_and_recreate_database + preflight + FORCE/retry
2026-07-23 09:43:24 +02:00
charles-gauthereau
2aca036ee4
feat(postgres): wire clean_mode none/clean/drop_schemas into restore
2026-07-23 09:36:25 +02:00
charles-gauthereau
2a72a55e57
feat(postgres): detect CREATE SCHEMA public in archive TOC
2026-07-23 09:31:50 +02:00
charles-gauthereau
ae63a0df50
feat(postgres): add drop_all_schemas + recreate_public_schema
2026-07-23 09:27:36 +02:00
charles-gauthereau
560c5e02f2
feat(postgres): add RestoreCleanMode option parsing
2026-07-23 09:24:21 +02:00
charles-gauthereau
ca17bf9cb9
feat(postgres): add quote_ident/quote_literal for DDL
2026-07-23 09:20:15 +02:00
charles-gauthereau
9fbaab6feb
refactor(postgres): unify FC/FD restore via run_pg_restore, validate-before-destroy
2026-07-23 09:15:32 +02:00
charles-gauthereau
1289497d98
refactor(postgres): extract prepare_archive, validate before restore
2026-07-23 09:09:19 +02:00
charles-gauthereau
27c55dbfd8
refactor(postgres): drive async restore work via captured Tokio Handle
2026-07-23 09:01:50 +02:00
charles-gauthereau
45e3acd709
fix(postgres): add pg_restore_binary_name() for Windows restore
2026-07-23 08:58:49 +02:00
Charles GTE
90d55f7630
fix: backup folder name ( #86 )
...
* fix: support configurable backup file prefix (#83 )
* fix: backup folder name
* fix: ghcr publish agent image
---------
Co-authored-by: Antonin Jousson <18756890+Antoninj@users.noreply.github.com >
Co-authored-by: charles-gauthereau <charles.gauthereau@soluce-technologies.com >
2026-07-21 23:27:10 +02:00
charles-gauthereau
6cddc73565
Merge branch 'main' into fix/storage-encryption
...
# Conflicts:
# docker-compose.yml
2026-07-10 18:49:01 +02:00
Charles GTE
334ab51125
fix: cron ( #79 )
...
* fix: cron log
---------
Co-authored-by: charles-gauthereau <charles.gauthereau@soluce-technologies.com >
2026-07-09 11:03:55 +02:00
Charles GTE
ec7715ca26
fix: cron ( #78 )
...
* fix: docker-compose.yml
* fix: cron
---------
Co-authored-by: charles-gauthereau <charles.gauthereau@soluce-technologies.com >
2026-07-09 09:36:53 +02:00
charles-gauthereau
32d4e22196
fix: status.rs
2026-07-08 22:24:50 +02:00
charles-gauthereau
f277c5485f
feat: decrypt encrypted storages in status ping
2026-07-08 20:52:17 +02:00
charles-gauthereau
585e0bea72
feat: accept encrypted storages markers in DatabaseStatus
2026-07-08 20:47:20 +02:00
charles-gauthereau
ee97c6056a
feat: add decrypt_json_gcm for encrypted status storages
2026-07-08 20:43:01 +02:00
Charles GTE
324a2ea3f2
fix: security ( #75 )
2026-07-04 12:24:37 +02:00
charles-gauthereau
608b82a254
fix: test docker_volume.rs
2026-07-02 22:08:55 +02:00
charles-gauthereau
b2b2733c4d
feat: docker-volume provider
...
refactor: move build_tar to utils::compress
refactor: move choose_restore_path to utils::common
docs: remove docker-volume README section
fix: keep archive path for multi-file non-docker-volume restores
docs: trim docker-volume README section to essentials
refactor: run docker-volume backup/restore inside spawn_blocking like other providers
docs: enable docker socket, add volume example and security notes
feat: sweep orphaned ephemeral helper containers on startup
feat: docker-volume clean-replace restore via upload_to_container
fix: serialize env-var access in docker-volume tests to avoid setenv/getenv UB
feat: docker-volume backup via download_from_container
feat: docker-volume ping via inspect_volume
fix: return extraction dir for multi-file restore archives
feat: gzip already-tar inputs directly instead of double-wrapping
feat: docker helper (client, self-image, container lifecycle, sweep)
feat: docker-volume provider
2026-07-02 21:45:11 +02:00
charles-gauthereau
34f353b68f
fix: postgres keep_ownership flag
2026-06-29 19:10:49 +02:00
charles-gauthereau
694b463787
feat: conditionally omit --no-owner/--no-privileges in pg_restore based on keep_ownership option
2026-06-29 18:52:37 +02:00
charles-gauthereau
aed1e86956
feat: add generic options map to DatabaseConfig
...
Add `options: HashMap<String, serde_json::Value>` to DatabaseConfig and
`options: Option<HashMap<...>>` to InputDatabaseConfig so callers can
pass arbitrary per-database options (e.g. keep_ownership for pg_dumpall).
Update all DatabaseConfig struct literals in test files and add three
new config-service unit tests covering present, absent, and non-bool values.
2026-06-29 18:49:01 +02:00
charles-gauthereau
6388aff1e3
fix: postgres cluster dump command
2026-06-29 17:10:11 +02:00
charles-gauthereau
4be54a614e
fix: postgres cluster dump command
2026-06-29 15:18:52 +02:00
Charles GTE
16a37e033e
fix: azure ( #71 )
2026-06-27 20:51:47 +02:00
Charles GTE
29ca5a317b
feat: add-gcs-storage-provider ( #70 )
...
* fix: refactoring
* chore: add google-cloud-storage and google-cloud-auth deps
* feat: add GCS provider config model
* feat: add GCS credential, client, and stream-source helpers
StreamSource bridges build_stream's Send-only byte stream into the SDK's
StreamingSource (which send_buffered requires to be Send+Sync+'static) via a
bounded mpsc channel, avoiding any change to the shared UploadStream type.
* feat: implement GCS StorageProvider upload
* feat: register google-cloud-storage provider in factory
* test: GCS upload roundtrip against fake-gcs-server
* fix: format GCS bucket as projects/_/buckets/<name> in upload_with_client
write_object rejects the bare bucket id with "malformed bucket name"; the
production provider passed config.bucket_name unformatted, so real uploads
would always fail. Format once in upload_with_client so prod and the
fake-gcs-server test share the corrected path.
* style: cargo fmt GCS provider files
* fix: gcs
2026-06-27 20:37:22 +02:00
Charles GTE
01f5d34c96
fix: pgdump-cluster ( #68 )
...
* feat: add as_str/from_str to PostgresDumpFormat
* feat: resolve pg_dumpall/psql binary names
* feat: add include_globals field to database config
* feat: add pg_dumpall/psql globals dump and apply
* feat: add postgres backup bundle (manifest + build + resolve)
* feat: bundle globals into postgres backup when include_globals is set
* feat: replay globals before pg_restore when backup archive is a bundle
* refactor: bind FD restore tempdir guard once to clear unused warnings
* docs: demonstrate include_globals in sample databases.json
* chore: silence test-only re-export warning in non-test builds
* revert: remove include_globals feature, restore plain pg_dump/pg_restore
* feat: add pg_dumpall/psql binary names and is_superuser check
* feat: add postgresql-cluster db type and config parsing
* feat: pg_dumpall cluster backup and psql restore
* feat: route postgresql-cluster through PostgresClusterDatabase
* docs: add postgresql-cluster sample to databases.json
* refactor: split cluster mode into cluster/ module (backup, restore, database)
* test: mirror cluster tests into src/tests/domain/cluster/
2026-06-27 17:23:57 +02:00