Coder Social home page Coder Social logo

Comments (8)

kevinmsun avatar kevinmsun commented on July 30, 2024

one workaround is organization_id: strawberry.scalars.ID = strawberry_django.field(field_name="organization_id"), which fixes the name and prevents it from being reassigned/detected

from strawberry-django.

bellini666 avatar bellini666 commented on July 30, 2024

@kevinmsun this should be solved in the latest release.

Let me know if it works ok for you!

from strawberry-django.

kevinmsun avatar kevinmsun commented on July 30, 2024

@kevinmsun this should be solved in the latest release.

Let me know if it works ok for you!

thanks so much, I'll check it out!

from strawberry-django.

moritz89 avatar moritz89 commented on July 30, 2024

This looks is really useful. All my types are annotated with

def to_gid(gql_type: Type, pk: uuid.UUID) -> relay.GlobalID | None:
    if pk:
        return relay.GlobalID(gql_type.__strawberry_definition__.name, str(pk))
    return None

@strawberry_django.type(Site)
class SiteGQLNode(relay.Node):
    @strawberry_django.field
    def organization_id(self, root: PermissionGroup) -> relay.GlobalID | None:
        return to_gid(OrganizationGQLNode, root.organization_id)

from strawberry-django.

moritz89 avatar moritz89 commented on July 30, 2024

Just noticed that it returns the UUID (if the primary key is set as UUIDs) instead of the relay.GID. Is there an approach to write code similar to the following:

@strawberry_django.type(Site)
class SiteGQLNode(relay.Node):
    organization_id: relay.GlobalID | None

And the respective GQL query:

{
  allSites {
    edges { node {
      id
      organizationId
    }}
  }
}

from strawberry-django.

bellini666 avatar bellini666 commented on July 30, 2024

@moritz89 you mean, using organization_id: auto but have it being exposed as organization_id: relay.GlobalID | None?

from strawberry-django.

moritz89 avatar moritz89 commented on July 30, 2024

Not necessarily, just a method to be able to specify it as a single line, organization_id: auto or organization_id: relay.GlobalID | None instead of

@strawberry_django.field
def organization_id(self, root: PermissionGroup) -> relay.GlobalID | None:
    return to_gid(OrganizationGQLNode, root.organization_id)

When I use either of the single line options, it returns the UUID instead of GQL GID.

With v0.33.0 the result was:

{
  "data": {
    "allSites": {
      "edges": [
        {
          "node": {
            "id": "U2l0ZUdRTE5vZGU6N2JmN2ZhNjYtNTU1ZS00N2QzLThiNzktYjA0MGVhYTA1YWM1",
            "organizationId": "Admin's organization"
          }
        },
        {
          "node": {
            "id": "U2l0ZUdRTE5vZGU6ZmE2MzUxMWQtOWEzMC00MTBkLThhMmEtNWY3MmU1NmEyMDcy",
            "organizationId": "Admin's organization"
          }
        }
      ]
    }
  }
}

With v0.37.0 the output is:

{
  "data": {
    "allSites": {
      "edges": [
        {
          "node": {
            "id": "U2l0ZUdRTE5vZGU6N2JmN2ZhNjYtNTU1ZS00N2QzLThiNzktYjA0MGVhYTA1YWM1",
            "organizationId": "6ee306b6-cf33-4b7c-91c1-5371289257ac"
          }
        },
        {
          "node": {
            "id": "U2l0ZUdRTE5vZGU6ZmE2MzUxMWQtOWEzMC00MTBkLThhMmEtNWY3MmU1NmEyMDcy",
            "organizationId": "6ee306b6-cf33-4b7c-91c1-5371289257ac"
          }
        }
      ]
    }
  }
}

from strawberry-django.

bellini666 avatar bellini666 commented on July 30, 2024

@moritz89 sorry for taking too long to reply here...

I'm still confused about what exactly regressed here. Can you give me a longer explanation, or even maybe a MRE?

Also, you might want to open a new issue to register the regression as it will make it easier to track

from strawberry-django.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.