From dbb784d455c4e4ccb295482e517d8abf51ce626b Mon Sep 17 00:00:00 2001 From: Ryan Cartwright Date: Wed, 11 Mar 2026 09:15:02 +1100 Subject: [PATCH] fix: stop starting sql database when sql-database is not set --- cmd/run.go | 1 + cmd/start.go | 1 + pkg/cloud/cloud.go | 31 +++++++++++++++++++----------- pkg/dashboard/dashboard.go | 4 +++- pkg/view/tui/commands/local/run.go | 4 +++- 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/cmd/run.go b/cmd/run.go index 8266c62c..8a7987ed 100644 --- a/cmd/run.go +++ b/cmd/run.go @@ -107,6 +107,7 @@ var runCmd = &cobra.Command{ LocalConfig: proj.LocalConfig, MigrationRunner: project.BuildAndRunMigrations, LocalCloudMode: cloud.RunMode, + Preview: proj.Preview, }) tui.CheckErr(err) runView.Send(local.LocalCloudStartStatusMsg{Status: local.Done}) diff --git a/cmd/start.go b/cmd/start.go index e699ca8a..8a5cb5e2 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -202,6 +202,7 @@ var startCmd = &cobra.Command{ LocalConfig: proj.LocalConfig, MigrationRunner: project.BuildAndRunMigrations, LocalCloudMode: cloud.StartMode, + Preview: proj.Preview, }) tui.CheckErr(err) runView.Send(local.LocalCloudStartStatusMsg{Status: local.Done}) diff --git a/pkg/cloud/cloud.go b/pkg/cloud/cloud.go index 368fd1df..44b939f2 100644 --- a/pkg/cloud/cloud.go +++ b/pkg/cloud/cloud.go @@ -19,6 +19,7 @@ package cloud import ( "fmt" "io" + "slices" "sync" "google.golang.org/grpc" @@ -40,6 +41,7 @@ import ( "github.com/nitrictech/cli/pkg/cloud/websockets" "github.com/nitrictech/cli/pkg/grpcx" "github.com/nitrictech/cli/pkg/netx" + "github.com/nitrictech/cli/pkg/preview" "github.com/nitrictech/cli/pkg/project/dockerhost" "github.com/nitrictech/cli/pkg/project/localconfig" "github.com/nitrictech/nitric/core/pkg/logger" @@ -98,9 +100,11 @@ func (lc *LocalCloud) Stop() { logger.Errorf("Error stopping gateway: %s", err.Error()) } - err = lc.Databases.Stop() - if err != nil { - logger.Errorf("Error stopping databases: %s", err.Error()) + if lc.Databases != nil { + err = lc.Databases.Stop() + if err != nil { + logger.Errorf("Error stopping databases: %s", err.Error()) + } } } @@ -252,6 +256,7 @@ type LocalCloudOptions struct { LocalConfig localconfig.LocalConfiguration MigrationRunner sql.MigrationRunner LocalCloudMode Mode + Preview []preview.Feature } func New(projectName string, opts LocalCloudOptions) (*LocalCloud, error) { @@ -309,16 +314,20 @@ func New(projectName string, opts LocalCloudOptions) (*LocalCloud, error) { return nil, err } - connectionStringHost := "localhost" + var localDatabaseService *sql.LocalSqlServer - // Use the host.docker.internal address for connection strings with local cloud run mode - if opts.LocalCloudMode == RunMode { - connectionStringHost = dockerhost.GetInternalDockerHost() - } + if slices.Contains(opts.Preview, preview.Feature_SqlDatabases) { + connectionStringHost := "localhost" - localDatabaseService, err := sql.NewLocalSqlServer(projectName, localResources, opts.MigrationRunner, connectionStringHost) - if err != nil { - return nil, err + // Use the host.docker.internal address for connection strings with local cloud run mode + if opts.LocalCloudMode == RunMode { + connectionStringHost = dockerhost.GetInternalDockerHost() + } + + localDatabaseService, err = sql.NewLocalSqlServer(projectName, localResources, opts.MigrationRunner, connectionStringHost) + if err != nil { + return nil, err + } } localWebsites := websites.NewLocalWebsitesService(localGateway.GetApiAddress, localGateway.GetWebsocketAddress, opts.LocalCloudMode == StartMode) diff --git a/pkg/dashboard/dashboard.go b/pkg/dashboard/dashboard.go index d9759caa..5dffd319 100644 --- a/pkg/dashboard/dashboard.go +++ b/pkg/dashboard/dashboard.go @@ -984,7 +984,9 @@ func New(noBrowser bool, localCloud *cloud.LocalCloud, project *project.Project) localCloud.Topics.SubscribeToState(dash.updateTopicSubscriptions) localCloud.Storage.SubscribeToState(dash.updateBucketNotifications) localCloud.Http.SubscribeToState(dash.updateHttpProxies) - localCloud.Databases.SubscribeToState(dash.updateSqlDatabases) + if localCloud.Databases != nil { + localCloud.Databases.SubscribeToState(dash.updateSqlDatabases) + } localCloud.Websites.SubscribeToState(dash.handleWebsites) // subscribe to history events from gateway diff --git a/pkg/view/tui/commands/local/run.go b/pkg/view/tui/commands/local/run.go index 12963e89..56130558 100644 --- a/pkg/view/tui/commands/local/run.go +++ b/pkg/view/tui/commands/local/run.go @@ -103,7 +103,9 @@ var _ tea.Model = &TuiModel{} func (t *TuiModel) Init() tea.Cmd { t.reactiveSub = reactive.NewSubscriber() reactive.ListenFor(t.reactiveSub, t.localCloud.Apis.SubscribeToState) - reactive.ListenFor(t.reactiveSub, t.localCloud.Databases.SubscribeToState) + if t.localCloud.Databases != nil { + reactive.ListenFor(t.reactiveSub, t.localCloud.Databases.SubscribeToState) + } reactive.ListenFor(t.reactiveSub, t.localCloud.Websockets.SubscribeToState) reactive.ListenFor(t.reactiveSub, t.localCloud.Http.SubscribeToState)