4141class WebDbManager :
4242 """Database manager class based on Gramps CLI."""
4343
44- ALLOWED_DB_BACKENDS = ["sqlite" , "postgresql" ]
44+ ALLOWED_DB_BACKENDS = ["sqlite" , "postgresql" , "sharedpostgresql" ]
4545
4646 def __init__ (
4747 self ,
@@ -50,6 +50,7 @@ def __init__(
5050 username : Optional [str ] = None ,
5151 password : Optional [str ] = None ,
5252 create_if_missing : bool = True ,
53+ create_backend : str = "sqlite" ,
5354 ) -> None :
5455 """Initialize given a family tree name or subdirectory name (path)."""
5556 if dirname :
@@ -65,6 +66,7 @@ def __init__(
6566 self .username = username
6667 self .password = password
6768 self .create_if_missing = create_if_missing
69+ self .create_backend = create_backend
6870 self .path = self ._get_path ()
6971 self ._check_backend ()
7072
@@ -111,8 +113,13 @@ def _get_path(self) -> str:
111113 self ._create (path = path )
112114 return path
113115
114- def _create (self , path : str , dbid : str = "sqlite" ) -> None :
116+ def _create (self , path : str ) -> None :
115117 """Create new database."""
118+ if self .create_backend not in self .ALLOWED_DB_BACKENDS :
119+ raise ValueError (
120+ f"Database backend '{ self .create_backend } ' not supported for new tree."
121+ )
122+
116123 if not self .name :
117124 raise ValueError ("Cannot create database if name not specified." )
118125 os .mkdir (path )
@@ -123,12 +130,12 @@ def _create(self, path: str, dbid: str = "sqlite") -> None:
123130 name_file .write (self .name )
124131
125132 # create database
126- make_database (dbid )
133+ make_database (self . create_backend )
127134
128135 # create dbid file
129136 backend_path = os .path .join (path , DBBACKEND )
130137 with open (backend_path , "w" , encoding = "utf8" ) as backend_file :
131- backend_file .write (dbid )
138+ backend_file .write (self . create_backend )
132139
133140 def _check_backend (self ) -> None :
134141 """Check that the backend is among the allowed backends."""
0 commit comments