heetch / avro

Avro codec and code generation for Go
MIT License
85 stars 15 forks source link

avrogo generates non-idiomatic names #126

Open ojcm opened 11 months ago

ojcm commented 11 months ago

Names produced by avrogo do not follow idiomatic Go capitalisation/initialisation rules. (e.g. use ID rather than id or Id).

This can be reproduced with the following schema

{
    "name": "User",
    "type": "record",
    "fields": [
        {
            "name": "userID",
            "type": {
                "type": "string",
                "logicalType": "uuid"
            }
        }
    ]
}

avrogo generates

type User struct {
    Userid uuid.UUID `json:"userID"`
}

but an idiomatic representation would be

type User struct {
    UserID uuid.UUID `json:"userID"`
}

There are third-party libraries available to achieve this (e.g. github.com/hamba/avro uses github.com/ettle/strcase's PascalCase).

If this were implemented then it would be helpful to allow additional initialisms with command line arguments. For example in my use case I have schemas referring to MW (megawatts) and would like that initialised too.

I'm happy to work on this but I want to check if the change would be accepted before starting.

skateinmars commented 11 months ago

Hello,

and thanks for the suggestion.

This is a reasonable request so please feel free to submit a PR One thing that should be done though is preserve the current behavior to avoid breaking changes. Maybe a flag can be introduced to specify which case to use?

ojcm commented 10 months ago

Hello, please could someone review the PR I opened?

defgenx commented 5 months ago

Hello @skateinmars. Do you think you would be able to review this PR please ?