Comments (4)
Sorry for the late reply, was busy over the last day.
Yes, this is fairly easy to do by customizing the templates that you are using, and then passing the template directory via the xo command line. You can do that via the following:
# copy templates to a working directory
mkdir -p $GOPATH/src/mytemplates
cp $GOPATH/src/github.com/knq/xo/templates/postgres.*.tpl $GOPATH/src/
cd $GOPATH/src/mytemplates
# edit the templates ...
vi postgres.enum.go.tpl
# generate models with xo
xo --template-path $GOPATH/src/mytemplates pgsql://user:pass@host/dbname -s myschema
The template you need to modify is the 'enum' template. It is prefixed with the name of the database driver:
ken@ken-desktop:~$ cd $GOPATH/src/github.com/knq/xo/templates
ken@ken-desktop:~/src/go/src/github.com/knq/xo/templates$ ls
mssql.foreignkey.go.tpl mysql.foreignkey.go.tpl oracle.foreignkey.go.tpl postgres.foreignkey.go.tpl sqlite3.foreignkey.go.tpl xo_db.go.tpl
mssql.index.go.tpl mysql.index.go.tpl oracle.index.go.tpl postgres.index.go.tpl sqlite3.index.go.tpl xo_package.go.tpl
mssql.query.go.tpl mysql.proc.go.tpl oracle.query.go.tpl postgres.proc.go.tpl sqlite3.query.go.tpl
mssql.querytype.go.tpl mysql.query.go.tpl oracle.querytype.go.tpl postgres.query.go.tpl sqlite3.querytype.go.tpl
mssql.type.go.tpl mysql.querytype.go.tpl oracle.type.go.tpl postgres.querytype.go.tpl sqlite3.type.go.tpl
mysql.enum.go.tpl mysql.type.go.tpl postgres.enum.go.tpl postgres.type.go.tpl tpls.go
ken@ken-desktop:~/src/go/src/github.com/knq/xo/templates$
from xo.
I just looked at the enum file to refresh my memory on what fields need to be changed. If you need a quick shortcut to do what you are looking to accomplish, basically you need to change all instances of {{ .Name }}{{ $type }}
to {{ $type }}{{ .Name }}
in that file. I believe that should be all that's necessary. There are 4 instances in that file.
A perl one liner to change the name:
perl -pi -e 's/{{ \.Name }}{{ \$type }}/{{ \$type }}{{ \.Name }}/g' postgres.enum.go.tpl
BTW -- I don't think the proper noun followed by the instance name is idiomatic Go. I've seen it different ways in what I would consider to be idiomatic Go (standard library, and others).
from xo.
Part of the original decision behind this is also to reflect other custom code generators that are being used on projects that we are working on. That said, after thinking about this, I think you are likely right that it should be the other way around for naming. As such, I'll make a point in the next few days to add an option to do it the way this is currently done, and to make the default as what you are suggesting to better match with http.Status* and package.Err style naming conventions.
from xo.
Quick note that yesterday I pushed a change to make this the default, with a command line switch to toggle the previous name generation.
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.