Name: permissions
Owner: CyVerse Discovery Environment
Description: null
Created: 2016-07-18 21:31:39.0
Updated: 2016-07-18 21:32:00.0
Pushed: 2017-08-08 21:44:31.0
Homepage: null
Size: 3936
Language: Go
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
This service manages permissions for the Discovery environment.
This service is generated using go-swagger.
swagger.yml
swagger generate server -A permissions -f swagger.yml
restapi/configure_permissions.go
to add the service implementationsource_type_out:
type: object
required:
- id
- name
properties:
id:
type: string
minLength: 36
maxLength: 36
name:
type: string
minLength: 1
description:
type: string
source_types_out:
type: object
required:
- resource_types
properties:
resource_types:
type: array
items:
$ref: "#/definitions/resource_type_out"
esource_types:
get:
tags:
- resource_types
responses:
200:
description: resource type listing
schema:
$ref: "#/definitions/resource_types_out"
500:
description: resource type listing
schema:
$ref: "#/definitions/error_out"
agger generate server -A permissions -f swagger.yml
/04/18 13:52:14 building a plan for generation
/04/18 13:52:14 planning definitions
/04/18 13:52:15 planning operations
/04/18 13:52:15 grouping operations into packages
/04/18 13:52:15 planning meta data and facades
/04/18 13:52:15 rendering 4 models
/04/18 13:52:15 rendered model template: resource_type_out
/04/18 13:52:15 rendered model template: resource_types_out
/04/18 13:52:15 rendered model template: service_info
/04/18 13:52:15 rendered model template: error_out
/04/18 13:52:15 rendered handler template: resource_types.GetResourceTypes
/04/18 13:52:16 generated handler resource_types.GetResourceTypes
/04/18 13:52:16 rendered responses template: resource_types.GetResourceTypesResponses
/04/18 13:52:16 generated responses resource_types.GetResourceTypesResponses
/04/18 13:52:16 no parameters for operation resource_types.GetResourceTypes
/04/18 13:52:16 rendered handler template: status.Get
/04/18 13:52:16 generated handler status.Get
/04/18 13:52:16 rendered responses template: status.GetResponses
/04/18 13:52:16 generated responses status.GetResponses
/04/18 13:52:16 no parameters for operation status.Get
/04/18 13:52:16 rendered embedded Swagger JSON template: restapi.Permissions
/04/18 13:52:17 rendered builder template: operations.Permissions
/04/18 13:52:32 rendered server template: restapi.Server
/04/18 13:52:32 skipped (already exists) configure api template: operations.ConfigurePermissions
/04/18 13:52:32 rendered doc template: operations.Permissions
/04/18 13:52:32 rendered main template: server.Permissions
Update the imports to include the new operation:
rt (
...
ermissions/restapi/operations/resource_types"
...
Add the handler definition to configureAPI
:
i.ResourceTypesGetResourceTypesHandler =
resource_types.GetResourceTypesHandlerFunc(impl.BuildResourceTypesGetHandler(db))
restapi/impl/get_resource_types.go
:
age impl
rt (
atabase/sql"
ithub.com/go-swagger/go-swagger/httpkit/middleware"
ermissions/models"
rmsdb "permissions/restapi/impl/db"
ermissions/restapi/operations/resource_types"
buildResponse(db *sql.DB) (*models.ResourceTypesOut, error) {
Get the list of resource types.
sourceTypes, err := permsdb.ListResourceTypes(db)
err != nil {
return nil, err
turn &models.ResourceTypesOut{resourceTypes}, nil
BuildResourceTypesGetHandler(db *sql.DB) func() middleware.Responder {
Return the handler function.
turn func() middleware.Responder {
response, err := buildResponse(db)
if err != nil {
reason := err.Error()
return resource_types.NewGetResourceTypesInternalServerError().WithPayload(&models.ErrorOut{&reason})
}
return resource_types.NewGetResourceTypesOK().WithPayload(response)
restapi/impl/db/resource_types.go
:
age db
rt (
atabase/sql"
ermissions/models"
ListResourceTypes(db *sql.DB) ([]*models.ResourceTypeOut, error) {
Query the database.
ery := "SELECT id, name, description FROM resource_types"
ws, err := db.Query(query)
err != nil {
return nil, err
fer rows.Close()
Build the list of resource types.
r resourceTypes []*models.ResourceTypeOut
r rows.Next() {
var resourceType models.ResourceTypeOut
if err := rows.Scan(&resourceType.ID, &resourceType.Name, &resourceType.Description); err != nil {
return nil, err
}
resourceTypes = append(resourceTypes, &resourceType)
Check for any uncaught errors.
err := rows.Err(); err != nil {
return resourceTypes, err
turn resourceTypes, nil