-
-
Notifications
You must be signed in to change notification settings - Fork 73
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
Update Doku for nested select #26
Comments
Hey @pfennig42 , did you manage to filter results via joined tables? I have the same issue, and it drives me crazy. Would you mind to show me your solution? :) |
Hi @Ra0k, I just grabbed this snippet. Does this help you?
I filled the variables by heart, so I am only 80% sure it works. I would appreaciate the feedback! |
Hi @pfennig42, Thank you for the help and the quick response! Unfortunately, for me, the outcome is the same: if err := supaClient.DB.From("Workspace").Select("id, name, WorkspaceUser!inner(user_id, role)").Filter(`WorkspaceUser.role`, "eq", "admin").Execute(&results); err != nil {
fmt.Println(err)
http.Error(w, "internal server error", http.StatusInternalServerError)
return
} Output: Ps: |
The only thing I could think about is removing the spaces inside the querys? Otherwise I would trace the error until Postgres. There should be the translation error |
I just wonder why it works for you. Do you use the latest version of supabase-go? In my version (latest). Everything is sanitized. func SanitizeParam(param string) string {
if strings.ContainsAny(param, reservedChars) {
return fmt.Sprintf("\"%s\"", param)
}
return param
}
func (b *FilterRequestBuilder) Filter(column, operator, criteria string) *FilterRequestBuilder {
if b.negateNext {
b.negateNext = false
operator = "not." + operator
}
b.params.Add(SanitizeParam(column), operator+"."+criteria)
return b
} As far as I understand, it should always sanitize the input so it should always break the join filtering. |
Alright. Thanks for letting me know! |
@Ra0k There is currently a known problem with escaped characters in filter functions. Compare with #28. The problem lies indeed not in this repository but here. Currently two main strategies are considered after talking to @nedpals:
|
@Fritte795 forgive me the naivety of my question but is it possible to just take the nedpals/postgres-go repo and importing it into this repo and creating a PR? |
It would be possible, see 1. |
The filter is for the outer
So would this be right?
As long as you setup the foreign key relationships in the database it should work. |
Hey, since I just spend multiple hours on this problem, I thought it could be worth taking it as example.
When making a nested request, e.g.
select=user!inner (name), id&user.name=eq.foo
, there could be two errors. First that it is not parsable. The reason would be the space after theinner
.The second problem is, that it is not possible to use a nested string like "user.name", because the dot is a reserved char. As consequence the library will change it to ""user.name"" and the request fails with the statement:
42703: column Foo.user.name does not exist
A simple solution for this would be to use backticks instead of using a double quotation mark.
I think, that updating the docs to make this understandable could lower much pain
The text was updated successfully, but these errors were encountered: