Comments (2)
There are a couple of approaches to accomplishing this, using the existing xo code:
- Different packages for each schema. For example,
schema/v1
andschema/v2
. You would then generate them, and use common interfaces for each. You could modify the existing template to easily (for one only) generate all the common interfaces (this is the approach I use with PG databases, and also why xo is very helpful, as it generates the same interfaces for the database).
The logic would then be something like:
var schema CommonSchema
if environment == "v1" {
schema, err = v1.NewV1Schema()
} else {
schema, err = v2.NewV2Schema()
}
- Using custom templates that prefix the schema name on the type's / func's generated. ie, instead of "func BooksByAuthorID()" you would modify the template to be "func {{ schemaName}}BooksByAuthorID()". This becomes super cumbersome / silly with large schemas, so likely it would be better to just do #1.
That said, I would absolutely love ANY pull request that is well written! If you feel the addition of something like what you described would be beneficial, absolutely submit it, and I'll give it a read through and try it out. The barriers here for getting your PR are fairly low -- it just needs to make sense to the project as whole and be well written!
from xo.
I agree that having the schema name concatenated to the table name is a problem when dealing with different testing/staging environments both manually and auto created. In fact, I'd love to see the schema name become optional instead of default (unless the default target audience is working across the multiple schemas using the same connection pool).
from xo.
Related Issues (20)
- How to generate postgres functions under schema other than public
- xo schema scan is failing. HOT 1
- BPMN HOT 1
- Could you add the Comment of each Field of migration table to generated xo files ? HOT 6
- Can I generate only struct? (without CRUD methods)
- [Bug] array type is not generated correctly for integer array in case of postgres HOT 1
- error: createdb: unable to import package: 1:22: import "createdb" error: unable to find source related to: "createdb" HOT 5
- invalid memory address or nil pointer dereference
- Procedure code generation may have issues HOT 1
- _exists field in code generated code
- Not run go 1.19.5 on windows HOT 1
- run xo fails on windows os HOT 7
- Unable to run because of createdb error HOT 2
- [Question] List all Indexes from table inside typedef template HOT 1
- "LIMIT %%limit int%%" in MySQL
- Does xo support camelcase json tags? HOT 3
- Postgres foreign keys not working if name is the same HOT 2
- Postgres insert/update RETURNING HOT 1
- Type mapping HOT 1
- Custom types... again HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from xo.