Metadata-Version: 2.1
Name: graphi_crud
Version: 1.2.3
Summary: Graphene Dajngo CRUD generator
Home-page: https://github.com/abelayalew/graphi
License: MIT
Author: abelayalew
Author-email: abelayalew81@gmail.com
Requires-Python: >=3.11,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: Django (>=5.0.2,<6.0.0)
Requires-Dist: graphene-django (>=3.2.0,<4.0.0)
Requires-Dist: graphene-file-upload (>=1.3.0,<2.0.0)
Project-URL: Repository, https://github.com/abelayalew/graphi
Description-Content-Type: text/markdown

# Django Graphene CRUD Generator

## Installation
```
pip install graphi-crud
```

## Usage

```
import graphene
from graphi_crud.queries import Queries
from graphi_crud.create_mutation import CreateMutation
from graphi_crud.update_mutation import UpdateMutation
from graphi_crud.delete_mutation import DeleteMutation


Queries.generate_queries(["accounts"])
CreateMutation.generate_mutations(['accounts'])
UpdateMutation.generate_mutations(['accounts'])
DeleteMutation.generate_mutations(['accounts'])

class Query(Queries):
    pass

class Mutation(CreateMutation, UpdateMutation, DeleteMutation):
    pass


schema = graphene.Schema(query=Query, mutation=Mutation)

```

register your `schema` in settings and your good to go

## writing Queries

```
{
  user(where: {email: {icontains: "user"}}, offset: 10, limit: 10){
    id
    email
  }
}
```

## create mutation example

```
mutation{
  createUser(inputs: {email: "user@gmail.com", username: "newuser"}){
    data{
      id
      email
    }
  }
}
```

## update mutation example

```
mutation{
  updateUser(inputs: {lastLogin: "2023-12-12"}, where: {email: {icontains: "someuser"}}){
    affectedRows
    data {
      id
      username
    }
  }
}
```

## delete mutation examples

```
mutation{
  deleteUser(where: {email: {icontains: "someuser"}}){
    affectedRows
  }
}
```

## permissions
add `graphql_permissions` attribute on your model class with a list of permissions
example:
```  
  class Employee(models.Model):
      ...fields...
      graphql_permissions = ['accounts.add_employee', 'accounts.change_employee']
```
