-
-
Notifications
You must be signed in to change notification settings - Fork 407
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
generics model support #2003
base: v10
Are you sure you want to change the base?
generics model support #2003
Conversation
name := t.Type.Name() | ||
index := strings.Index(name, "[") | ||
if index > 0 { | ||
name = name[:index] | ||
} | ||
t.zeroStruct = reflect.New(t.Type).Elem() | ||
t.TypeName = internal.ToExported(t.Type.Name()) | ||
t.ModelName = internal.Underscore(t.Type.Name()) | ||
t.TypeName = internal.ToExported(name) | ||
t.ModelName = internal.Underscore(name) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wouldn't an easier way to do this be to just define the name directly on the thing?
Like this:
type File struct {
tableName string `pg:"files"`
...
This way even if its a generic, the table name stays the same? With how you have it written, you're throwing out the generic argument entirely, so it would never be considered for the table name.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Directly defining the name works in some models without nested structure, but in some cases, it does not work.
Sometimes, we forget to use an alias.
example: https://go.dev/play/p/VJpB_c3cLkt
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh interesting, that is definitely a bug in my eyes then, the way table names are built should be consistent. Let me mess around a bit here.
Thank you very much for the code reproduction!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see now what is happening, the way we generate the alias is different than how we derive the actual table name. Thus why it is only affecting select queries oddly.
I think there is a more elegant solution to this, but let me mess around some more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Have you found a better solution?
generics model support