Skip to content

Commit fd3adfc

Browse files
authored
Merge pull request #13 from Portabase/feat/postgres-cluster
Feat/postgres cluster
2 parents c911d20 + cf14c35 commit fd3adfc

7 files changed

Lines changed: 32 additions & 249 deletions

File tree

cc/.env

Lines changed: 0 additions & 13 deletions
This file was deleted.

cc/databases.json

Lines changed: 0 additions & 54 deletions
This file was deleted.

cc/docker-compose.yml

Lines changed: 0 additions & 128 deletions
This file was deleted.

commands/agent.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ def agent(
126126
choices=[
127127
"back",
128128
"postgresql",
129+
"postgresql-cluster",
129130
"mysql",
130131
"mariadb",
131132
"sqlite",
@@ -144,6 +145,14 @@ def agent(
144145
if not db_type:
145146
raise typer.Exit()
146147

148+
if db_type == "postgresql-cluster":
149+
console.print(
150+
"[warning]⚠ Postgres Cluster requires a superuser. "
151+
"Cluster backup/restore uses pg_dumpall, which dumps all "
152+
"databases and global objects (roles, tablespaces). "
153+
"The provided user must be a Postgres superuser.[/warning]"
154+
)
155+
147156
friendly_name = Prompt.ask("Display Name", default="External DB")
148157

149158
if db_type == "sqlite":
@@ -169,7 +178,7 @@ def agent(
169178
port = IntPrompt.ask(
170179
"Port",
171180
default=5432
172-
if db_type == "postgresql"
181+
if db_type in ["postgresql", "postgresql-cluster"]
173182
else (
174183
3050
175184
if db_type == "firebird"
@@ -208,6 +217,7 @@ def agent(
208217
choices=[
209218
"back",
210219
"postgresql",
220+
"postgresql-cluster",
211221
"mysql",
212222
"mariadb",
213223
"sqlite",
@@ -265,7 +275,7 @@ def agent(
265275
f"[success]✔ Added SQLite database ({db_name})[/success]"
266276
)
267277

268-
elif db_engine == "postgresql":
278+
elif db_engine in ["postgresql", "postgresql-cluster"]:
269279
pg_port = get_free_port()
270280
db_user = "admin"
271281
db_pass = generate_password(16)
@@ -295,7 +305,7 @@ def agent(
295305
{
296306
"name": db_name,
297307
"database": db_name,
298-
"type": "postgresql",
308+
"type": db_engine,
299309
"username": db_user,
300310
"password": db_pass,
301311
"port": 5432,
@@ -304,8 +314,13 @@ def agent(
304314
},
305315
)
306316

317+
label = (
318+
"Postgres Cluster"
319+
if db_engine == "postgresql-cluster"
320+
else "Postgres"
321+
)
307322
console.print(
308-
f"[success]✔ Added Postgres container (Port {pg_port})[/success]"
323+
f"[success]✔ Added {label} container (Port {pg_port})[/success]"
309324
)
310325

311326
elif db_engine == "mariadb" or db_engine == "mysql":

commands/db.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ def add_db(name: str = typer.Argument(..., help="Name of the agent")):
9393
choices=[
9494
"back",
9595
"postgresql",
96+
"postgresql-cluster",
9697
"mysql",
9798
"mariadb",
9899
"sqlite",
@@ -109,6 +110,14 @@ def add_db(name: str = typer.Argument(..., help="Name of the agent")):
109110
if not db_type:
110111
raise typer.Exit()
111112

113+
if db_type == "postgresql-cluster":
114+
console.print(
115+
"[warning]⚠ Postgres Cluster requires a superuser. "
116+
"Cluster backup/restore uses pg_dumpall, which dumps all "
117+
"databases and global objects (roles, tablespaces). "
118+
"The provided user must be a Postgres superuser.[/warning]"
119+
)
120+
112121
friendly_name = Prompt.ask("Display Name", default="External DB")
113122

114123
if db_type == "sqlite":
@@ -125,7 +134,7 @@ def add_db(name: str = typer.Argument(..., help="Name of the agent")):
125134
port = IntPrompt.ask(
126135
"Port",
127136
default=5432
128-
if db_type == "postgresql"
137+
if db_type in ["postgresql", "postgresql-cluster"]
129138
else (
130139
3050
131140
if db_type == "firebird"
@@ -158,6 +167,7 @@ def add_db(name: str = typer.Argument(..., help="Name of the agent")):
158167
choices=[
159168
"back",
160169
"postgresql",
170+
"postgresql-cluster",
161171
"mysql",
162172
"mariadb",
163173
"sqlite",
@@ -246,7 +256,7 @@ def add_db(name: str = typer.Argument(..., help="Name of the agent")):
246256
)
247257
console.print(f"[success]✔ Added SQLite database ({db_name})[/success]")
248258

249-
elif db_engine == "postgresql":
259+
elif db_engine in ["postgresql", "postgresql-cluster"]:
250260
db_port = get_free_port()
251261
db_user = "admin"
252262
db_pass = generate_password(16)
@@ -465,7 +475,7 @@ def add_db(name: str = typer.Argument(..., help="Name of the agent")):
465475
"username": "sa" if db_engine == "mssql" else db_user,
466476
"password": db_pass,
467477
"port": 5432
468-
if db_engine == "postgresql"
478+
if db_engine in ["postgresql", "postgresql-cluster"]
469479
else (
470480
3050
471481
if db_engine == "firebird"

dd/.env

Lines changed: 0 additions & 12 deletions
This file was deleted.

dd/docker-compose.yml

Lines changed: 0 additions & 35 deletions
This file was deleted.

0 commit comments

Comments
 (0)