feat(dolt): add server mode config to metadata.json schema (bd-dolt.2.2)
Add Dolt server mode configuration to metadata.json for multi-writer access:
- Add DoltMode, DoltServerHost, DoltServerPort, DoltServerUser fields to Config
- Add helper methods with sensible defaults (127.0.0.1:3306, root user)
- Update factory to read server mode config and pass to dolt.Config
- Add --server, --server-host, --server-port, --server-user flags to bd init
- Validate that --server requires --backend dolt
- Add comprehensive tests for server mode configuration
Example metadata.json for server mode:
{
"backend": "dolt",
"database": "dolt",
"dolt_mode": "server",
"dolt_server_host": "192.168.1.100",
"dolt_server_port": 3306,
"dolt_server_user": "beads"
}
Password should be set via BEADS_DOLT_PASSWORD env var for security.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -18,6 +18,15 @@ type Config struct {
|
||||
// Deletions configuration
|
||||
DeletionsRetentionDays int `json:"deletions_retention_days,omitempty"` // 0 means use default (3 days)
|
||||
|
||||
// Dolt server mode configuration (bd-dolt.2.2)
|
||||
// When Mode is "server", connects to external dolt sql-server instead of embedded.
|
||||
// This enables multi-writer access for multi-agent environments.
|
||||
DoltMode string `json:"dolt_mode,omitempty"` // "embedded" (default) or "server"
|
||||
DoltServerHost string `json:"dolt_server_host,omitempty"` // Server host (default: 127.0.0.1)
|
||||
DoltServerPort int `json:"dolt_server_port,omitempty"` // Server port (default: 3306)
|
||||
DoltServerUser string `json:"dolt_server_user,omitempty"` // MySQL user (default: root)
|
||||
// Note: Password should be set via BEADS_DOLT_PASSWORD env var for security
|
||||
|
||||
// Deprecated: LastBdVersion is no longer used for version tracking.
|
||||
// Version is now stored in .local_version (gitignored) to prevent
|
||||
// upgrade notifications firing after git operations reset metadata.json.
|
||||
@@ -185,3 +194,53 @@ func (c *Config) GetBackend() string {
|
||||
}
|
||||
return c.Backend
|
||||
}
|
||||
|
||||
// Dolt mode constants
|
||||
const (
|
||||
DoltModeEmbedded = "embedded"
|
||||
DoltModeServer = "server"
|
||||
)
|
||||
|
||||
// Default Dolt server settings
|
||||
const (
|
||||
DefaultDoltServerHost = "127.0.0.1"
|
||||
DefaultDoltServerPort = 3306
|
||||
DefaultDoltServerUser = "root"
|
||||
)
|
||||
|
||||
// IsDoltServerMode returns true if Dolt is configured for server mode.
|
||||
func (c *Config) IsDoltServerMode() bool {
|
||||
return c.GetBackend() == BackendDolt && c.DoltMode == DoltModeServer
|
||||
}
|
||||
|
||||
// GetDoltMode returns the Dolt connection mode, defaulting to embedded.
|
||||
func (c *Config) GetDoltMode() string {
|
||||
if c.DoltMode == "" {
|
||||
return DoltModeEmbedded
|
||||
}
|
||||
return c.DoltMode
|
||||
}
|
||||
|
||||
// GetDoltServerHost returns the Dolt server host, defaulting to 127.0.0.1.
|
||||
func (c *Config) GetDoltServerHost() string {
|
||||
if c.DoltServerHost == "" {
|
||||
return DefaultDoltServerHost
|
||||
}
|
||||
return c.DoltServerHost
|
||||
}
|
||||
|
||||
// GetDoltServerPort returns the Dolt server port, defaulting to 3306.
|
||||
func (c *Config) GetDoltServerPort() int {
|
||||
if c.DoltServerPort == 0 {
|
||||
return DefaultDoltServerPort
|
||||
}
|
||||
return c.DoltServerPort
|
||||
}
|
||||
|
||||
// GetDoltServerUser returns the Dolt server user, defaulting to root.
|
||||
func (c *Config) GetDoltServerUser() string {
|
||||
if c.DoltServerUser == "" {
|
||||
return DefaultDoltServerUser
|
||||
}
|
||||
return c.DoltServerUser
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user