avro icon indicating copy to clipboard operation
avro copied to clipboard

avrogo generates non-idiomatic names

Open ojcm opened this issue 7 months ago • 2 comments

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.

ojcm avatar Nov 29 '23 10:11 ojcm