Files
qfixdpl/tools/remove_multidb.sh
Ramiro Paz 0e8fe168ef fiumba
2026-03-09 15:09:06 -03:00

76 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
set -e
MODULE_IMPORT="quantex.com.ar/multidb"
MODULE_NAME="multidb"
DB_VAR_NAME="database"
echo "Removing all references to '$MODULE_NAME' and replacing with 'database/sql' where needed..."
FILES=$(find ./src -type f -name "*.go")
for file in $FILES; do
echo "Processing $file"
# 1. Remove explicit import by module path
perl -pi -e "s|.*$MODULE_IMPORT.*\n||g" "$file"
# 2. Remove any import line containing 'multidb'
perl -pi -e 's|.*"[^"]*multidb[^"]*".*\n||g' "$file"
# 3. Replace multidb.New(...) with sql.Open(...)
perl -pi -e "s|$MODULE_NAME\.New\s*\(\s*serviceName:\s*\"[^\"]*\",\s*(.*?)\)|sql.Open(\"postgres\", \1)|g" "$file"
# 4. Comment out database.Start()
perl -pi -e "s|$DB_VAR_NAME\.Start\(\)|// $DB_VAR_NAME.Start() removed, not needed in database/sql|g" "$file"
# 5. Remove any line containing .PeriodicDBPing
perl -pi -e "s|.*\.PeriodicDBPing.*\n||g" "$file"
# 6. Remove any reference to *multidb.Type
perl -pi -e "s|\*?$MODULE_NAME\.[A-Za-z0-9_]+||g" "$file"
# 7. Remove the field 'MultiDB multidb.Config' from structs
perl -pi -e "s|MultiDB\s+$MODULE_NAME\.Config\s*||g" "$file"
# 8. Remove orphan field 'MultiDB' with no type
perl -pi -e 's/^\s*MultiDB\s*\n//g' "$file"
# 9. Remove field 'db' with no type (after type removal)
perl -pi -e "s|^\s*db\s*\n||g" "$file"
# 10. Replace store.Config{MultiDB: ...} with store.Config{}
perl -pi -e 's|store\.Config\s*{\s*MultiDB:\s*[^}]+}|store.Config{}|g' "$file"
# 11. Remove p.db.Close() line
perl -pi -e 's|^[ \t]*p\.db\.Close\(\)[ \t]*;?[ \t]*\n||g' "$file"
# 12. Remove block from database initialization to return s, nil
perl -0777 -pi -e 's|database\s*,\s*err\s*:=.*?\n.*?return s,\s*nil\n||gs' "$file"
# 13. If function New(...) is now empty, insert 'return nil, nil'
perl -0777 -pi -e 's|func\s+New\([^\)]*\)\s*\(\*Store,\s*error\)\s*{\s*}|func New(config Config) (*Store, error) {\n return nil, nil\n}|g' "$file"
# 14. Clean Store struct, leave it empty if db field was removed
perl -0777 -pi -e 's|type Store struct\s*{\s*db\s*:.*?\n\s*}|type Store struct {}|g' "$file"
done
# 15. Remove import "database/sql" if not used anymore
for file in $FILES; do
if ! grep -q "sql." "$file" && grep -q '"database/sql"' "$file"; then
echo "Removing unused import 'database/sql' in $file"
perl -pi -e 's|.*"database/sql".*\n||g' "$file"
fi
done
# 16. Remove the module requirement from go.mod and clean go.sum
echo "Cleaning go.mod and go.sum..."
go mod edit -droprequire=$MODULE_IMPORT || true
go mod tidy
go mod vendor || true
# 17. Remove vendored copy if exists
rm -rf ./vendor/quantex.com.ar/multidb || true
echo "multidb module fully removed."