Skip to content

Add concept of main service for the package#239

Merged
nfx merged 1 commit intomainfrom
gen/main-service
Dec 9, 2022
Merged

Add concept of main service for the package#239
nfx merged 1 commit intomainfrom
gen/main-service

Conversation

@nfx
Copy link
Copy Markdown
Contributor

@nfx nfx commented Dec 9, 2022

This PR adds an advanced code generation feature for "main services" per package, which could be "flattened down" to the same namespace as the package itself, producing better end-user UX for the generated code. This manifests in the following templates:

package-level generation:

{{if .MainService -}}
    // code for a package with a main service
    {{load ".codegen/service.go.tmpl"}}
    {{template "service" .MainService}}
{{- else -}}
    // code for a package with multiple services
{{end}}

service-level generation:

{{if not .MatchesPackageName}}
	{{template "service" .}}
{{else}}
	{{skipThisFile}}
{{end}}

{{define "service"}}
	// code for a service
{{end}}

This PR adds an advanced code generation feature for "main services" per package, which could be "flattened down" to the same namespace as the package itself, producing better end-user UX for the generated code. This manifests in the following templates:

package-level generation:
```
{{if .MainService -}}
    // code for a package with a main service
    {{load ".codegen/service.go.tmpl"}}
    {{template "service" .MainService}}
{{- else -}}
    // code for a package with multiple services
{{end}}
```

service-level generation:
```
{{if not .MatchesPackageName}}
	{{template "service" .}}
{{else}}
	{{skipThisFile}}
{{end}}

{{define "service"}}
   // code for a service
{{end}}
```
@nfx nfx requested a review from a team December 9, 2022 12:20
@nfx nfx merged commit 471594e into main Dec 9, 2022
@nfx nfx deleted the gen/main-service branch December 9, 2022 12:21
Copy link
Copy Markdown
Contributor

@pietern pietern left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nfx Please add a test for this. I worry without exercising this path in this repo it will be easy to break and not know it's broken.

@nfx nfx mentioned this pull request Dec 23, 2022
nfx added a commit that referenced this pull request Dec 23, 2022
# Version changelog

## 0.2.0

* Added `DATABRICKS_AUTH_TYPE` environment variable
([#248](#248)).
* Added Policy Families API
([#263](#263)).
* Added experimental `ErrCannotConfigureAuth` and `ErrNotAccountClient`
([#237](#237),
[#238](#238)).
* Added DBFS file handle that supports both reading and writing
([#261](#261)).
* Added `io.WriterTo` for DBFS file reader
([#249](#249)).
* Added `pflag.Value` interfaces for enums
([#234](#234)).
* Added support for adding custom HTTP visitors per request
([#230](#230)).
* Added support for raw body as byte slice if requested
([#247](#247)).
* Improved callbacks for polling the status of long-running operations
([#258](#258)).
* Improved rendering of HTTP links in godoc
([#229](#229)).
* Updated field types in the Jobs API from spec
([#259](#259)).
* Multiple OpenAPI consistency passes
([#254](#254),
[#241](#241),
[#243](#243),
[#255](#255),
[#236](#236)).

API changes:
* Renamed `IsAccountsClient` to `IsAccountClient`
([#231](#231)).
* `w.ClusterPolicies.ListAll` now takes `clusterpolicies.List` as an
argument.
* `github.com/databricks/databricks-sdk-go/service/dbsql` package is
renamed to `github.com/databricks/databricks-sdk-go/service/sql`.
 * `w.DataSources.ListDataSources` is renamed to `w.DataSources.List`.
 * `w.Queries.CreateQuery` is renamed to `w.Queries.CreateQuery`.
* `w.Queries.DeleteQueryByQueryId` is renamed to
`w.Queries.DeleteByQueryId`.
 * `w.Queries.GetQueryByQueryId` is renamed to `w.Queries.GetByQueryId`.
 * `w.Queries.UpdateQuery` is renamed to `w.Queries.Update`.
* `w.Alerts.DeleteAlertByAlertId` is renamed to
`w.Alerts.DeleteByAlertId`.
 * `w.Alerts.UpdateAlert` is renamed to `w.Alerts.Update`.
 * `w.Alerts.GetAlertByAlertId` is renamed to `w.Alerts.GetByAlertId`.
 * `w.Alerts.ListAlerts` is renamed to `w.Alerts.List`.
 * `w.Dashboards.CreateDashboard` is renamed to `w.Dashboards.Create`.
* `w.Dashboards.DeleteDashboardByDashboardId` is renamed to
`w.Dashboards.GetByDashboardId`.
* `w.Dashboards.ListDashboardsAll` is renamed to `w.Dashboards.ListAll`.
* `w.Dashboards.DeleteDashboardByDashboardId` is renamed to
`w.Dashboards.DeleteByDashboardId`.
 * `w.Dashboards.RestoreDashboard` is renamed to `w.Dashboards.Restore`.
* `deployment.CreateCustomerManagedKeyRequest` now takes
`deployment.KeyUseCase` enum.
* `w.GlobalInitScripts.CreateScript` is renamed to
`w.GlobalInitScripts.Create`.
* `w.GlobalInitScripts.DeleteScriptByScriptId` is renamed to
`w.GlobalInitScripts.DeleteByScriptId`.
* `w.GlobalInitScripts.UpdateScript` is renamed to
`w.GlobalInitScripts.Update`.
* `w.GlobalInitScripts.GetScriptByScriptId` is renamed to
`w.GlobalInitScripts.GetByScriptId`.
* `w.GlobalInitScripts.ListScriptsAll` is renamed to
`w.GlobalInitScripts.ListAll`.
 * `jobs.ResetJob.NewSettings` is now required field.
 * `w.Pipelines.CreatePipeline` is renamed to `w.Pipelines.Create`.
* `w.Pipelines.DeletePipelineByPipelineId` is renamed to
`w.Pipelines.DeleteByPipelineId`.
 * `w.Pipelines.UpdatePipeline` is renamed to `w.Pipelines.Update`.
* `w.Pipelines.GetPipelineByPipelineId` is renamed to
`w.Pipelines.GetByPipelineId`.
 * `w.StorageCredentials.Update` now also returns an entity.
 * `w.ExternalLocations.Update` now also returns an entity.
 * `w.Metastores.Update` now also returns an entity.
* `unitycatalog.CreateMetastoreAssignment.WorkspaceId` type changed from
`int` to `int64`.
* `unitycatalog.UnassignRequest.WorkspaceId` type changed from `int` to
`int64`.
 * `w.Catalogs.Update` now also returns an entity.
 * `w.Schemas.Update` now also returns an entity.
 * `w.Providers.Update` now also returns an entity.
 * `w.Shares.Update` now also returns an entity.
* `WarehousesAPI` service moved to
`github.com/databricks/databricks-sdk-go/service/sql` package.
* `w.Warehouses.CreateWarehouseAndWait` renamed to
`w.Warehouses.CreateAndWait`.
* `w.Warehouses.DeleteWarehouseByIdAndWait` renamed to
`w.Warehouses.DeleteByIdAndWait`.
 * `w.Warehouses.EditWarehouse` renamed to `w.Warehouses.Edit`.
 * `w.Warehouses.GetWarehouseById` renamed to `w.Warehouses.GetById`.
 * `w.Warehouses.ListWarehousesAll` renamed to `w.Warehouses.ListAll`.
* Removed `w.Dbfs.Overwrite` in favor of `w.Dbfs.Open("....",
dbfs.FileModeOverwrite|dbfs.FileModeWrite)`.
 * Added third required argument to `w.Dbfs.Open`.

Code generation:

* Added concept of `main` service for the package
([#239](#239)).
* Added entity primitives check
([#242](#242)).
* Added helpers for CRUD generation
([#246](#246)).
* Added more entity-generation utils
([#257](#257)).
* Dynamically generate `.gitattributes`
([#244](#244)).
* Fixed required order fields
([#245](#245)).
* Parse summary from descriptions
([#228](#228)).
* Print error on formatter failure
([#235](#235)).
* Update usage string in generator
([#260](#260)).
* Fixed order of host completion
([#233](#233)).

Dependency updates:

* Bump google.golang.org/api from 0.103.0 to 0.105.0
([#232](#232),
[#252](#252)).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants