0.0.11 • Published 5 months ago

@softwarecitadel/adonisjs-girouette v0.0.11

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

Girouette

Girouette is a AdonisJS package providing decorators to handle routing.

npm-image license-image typescript-image

Installation

npm install @softwarecitadel/adonisjs-girouette
node ace configure @softwarecitadel/adonisjs-girouette

Usage

// CustomersController.ts
import { Get, Post, Patch, Delete, Middleware } from "@ioc:SoftwareCitadel/Girouette"

export default class CustomersController {
  @Get("/customers", "customers.index")
  public async index(/* ... */) {
    // ...
  }
  
  @Get("/customers/create", "customers.create")
  @Middleware("auth")
  public async create(/* ... */) {
    // ...
  }
  
  @Post("/customers", "customers.store")
  @Middleware("auth")
  public async store(/* ... */) {
    // ...
  }
  
  @Get("/customers/:id", "customers.show")
  @Where("id", /^[0-9]+$/)
  public async show(/* ... */) {
    // ...
  }

  @Get("/customers/:id/edit", "customers.edit")
  @Where("id", /^[0-9]+$/)
  @Middleware("auth")
  public async edit(/* ... */) {
    // ...
  }

  @Patch("/customers/:id", "customers.update")
  @Where("id", /^[0-9]+$/)
  @Middleware("auth")
  public async update(/* ... */) {
    // ...
  }

  @Delete("/customers/:id", "customers.destroy")
  @Where("id", /^[0-9]+$/)
  @Middleware("auth")
  public async destroy(/* ... */) {
    // ...
  }
}

Resourceful controller

// CustomersController.ts
import { Resource } from "@ioc:SoftwareCitadel/Girouette"

@Resource("/customers", "customers", {"*": "auth"})
export default class CustomersController {
  public async index(/* ... */) {
    // ...
  }
  
  public async create(/* ... */) {
    // ...
  }
  
  public async store(/* ... */) {
    // ...
  }
  
  public async show(/* ... */) {
    // ...
  }

  public async edit(/* ... */) {
    // ...
  }

  public async update(/* ... */) {
    // ...
  }

  public async destroy(/* ... */) {
    // ...
  }
}

You can also create a resource that is API only.

// CustomersController.ts
import { ApiOnly, Resource } from "@ioc:SoftwareCitadel/Girouette"

@Resource("/users", "users")
@ApiOnly()
export default class CustomersController {
  // ...
}

Filtering routes

You can restrict specific methods using the @Except decorator.

// CustomersController.ts
import { Except, Resource } from "@ioc:SoftwareCitadel/Girouette"

@Resource("/users", "users")
@Except(["store", "update", "destroy"])
export default class CustomersController {
  // ...
}

The opposite of @Except decorator is the @Only decorator which can be used to register only the methods you want.

// CustomersController.ts
import { Only, Resource } from "@ioc:SoftwareCitadel/Girouette"

@Resource("/users", "users")
@Only(["index", "show"])
export default class CustomersController {
  // ...
}
0.0.11

5 months ago

0.0.10

10 months ago

0.0.9

11 months ago

0.0.8

12 months ago

0.0.7

1 year ago

0.0.5

1 year ago

0.0.6

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago

0.0.0

1 year ago