Skip to content

Commit

Permalink
Create and Delete added
Browse files Browse the repository at this point in the history
  • Loading branch information
codepope committed Aug 4, 2020
1 parent e377868 commit 5800b00
Show file tree
Hide file tree
Showing 3 changed files with 141 additions and 8 deletions.
53 changes: 53 additions & 0 deletions api/resource_organizations.go
Expand Up @@ -81,3 +81,56 @@ func (client *Client) GetCurrentOrganizations() (Organization, []Organization, e

return data.UserOrganizations.PersonalOrganization, data.UserOrganizations.Organizations.Nodes, nil
}

func (c *Client) CreateOrganization(organizationname string) (*Organization, error) {
query := `
mutation($input: CreateOrganizationInput!) {
createOrganization(input: $input) {
organization {
id
name
slug
type
viewerRole
}
}
}
`

req := c.NewRequest(query)

req.Var("input", map[string]string{
"name": organizationname,
})

data, err := c.Run(req)
if err != nil {
return nil, err
}

return &data.CreateOrganization.Organization, nil
}

func (c *Client) DeleteOrganization(id string) (deletedid string, err error) {
query := `
mutation($input: DeleteOrganizationInput!) {
deleteOrganization(input: $input) {
clientMutationId
deletedOrganizationId
}
}
`

req := c.NewRequest(query)

req.Var("input", map[string]string{
"organizationId": id,
})

data, err := c.Run(req)
if err != nil {
return "", err
}

return data.DeleteOrganization.DeletedOrganizationId, nil
}
11 changes: 11 additions & 0 deletions api/types.go
Expand Up @@ -107,6 +107,9 @@ type Query struct {
RestartApp struct {
App App
}

CreateOrganization CreateOrganizationPayload
DeleteOrganization DeleteOrganizationPayload
}

type Definition map[string]interface{}
Expand Down Expand Up @@ -347,6 +350,14 @@ type UserOrganizations struct {
}
}

type CreateOrganizationPayload struct {
Organization Organization
}

type DeleteOrganizationPayload struct {
DeletedOrganizationId string
}

type HostnameCheck struct {
ARecords []string `json:"aRecords"`
AAAARecords []string `json:"aaaaRecords"`
Expand Down
85 changes: 77 additions & 8 deletions cmd/orgs.go
Expand Up @@ -44,17 +44,34 @@ func newOrgsCommand() *Command {
orgsRemoveCommand := BuildCommandKS(orgscmd, runOrgsRemove, orgsRemoveStrings, os.Stdout, requireSession)
orgsRemoveCommand.Args = cobra.MaximumNArgs(2)

orgsCreateStrings := docstrings.KeyStrings{Usage: "create <org> <email>", Short: "Create an Organization", Long: ""}
orgsCreateStrings := docstrings.KeyStrings{Usage: "create <org>", Short: "Create an Organization", Long: ""}
orgsCreateCommand := BuildCommandKS(orgscmd, runOrgsCreate, orgsCreateStrings, os.Stdout, requireSession)
orgsCreateCommand.Args = cobra.MaximumNArgs(1)

orgsDestroyStrings := docstrings.KeyStrings{Usage: "destroy <org>", Short: "Destroy an Organization", Long: ""}
orgsDestroyCommand := BuildCommandKS(orgscmd, runOrgsDestroy, orgsDestroyStrings, os.Stdout, requireSession)
orgsDestroyCommand.Args = cobra.MaximumNArgs(1)
orgsDeleteStrings := docstrings.KeyStrings{Usage: "delete <org>", Short: "Delete an Organization", Long: ""}
orgsDeleteCommand := BuildCommandKS(orgscmd, runOrgsDelete, orgsDeleteStrings, os.Stdout, requireSession)
orgsDeleteCommand.Args = cobra.MaximumNArgs(1)

return orgscmd
}

func getOrgId(ctx *cmdctx.CmdContext, slug string) (id string, err error) {

personalOrganization, organizations, err := ctx.Client.API().GetCurrentOrganizations()

if personalOrganization.Slug == slug {
return personalOrganization.ID, nil
}

for _, o := range organizations {
if o.Slug == slug {
return o.ID, nil
}
}

return "", fmt.Errorf("slug %s not found", slug)
}

func runOrgsList(cmdctx *cmdctx.CmdContext) error {
asJSON := cmdctx.OutputJSON()

Expand All @@ -72,11 +89,28 @@ func runOrgsList(cmdctx *cmdctx.CmdContext) error {
return nil
}

fmt.Println("Formatted Print Here")
printOrg(personalOrganization, true)

for _, o := range organizations {
if o.ID != personalOrganization.ID {
printOrg(o, false)
}
}

return nil
}

func printOrg(o api.Organization, headers bool) {

if headers {
fmt.Printf("%-20s %-20s %-10s\n", "Name", "Slug", "Type")
fmt.Printf("%-20s %-20s %-10s\n", "----", "----", "----")
}

fmt.Printf("%-20s %-20s %-10s\n", o.Name, o.Slug, o.Type)

}

func runOrgsShow(ctx *cmdctx.CmdContext) error {
return fmt.Errorf("Show Not implemented")
}
Expand All @@ -86,7 +120,22 @@ func runOrgsInvite(ctx *cmdctx.CmdContext) error {
}

func runOrgsCreate(ctx *cmdctx.CmdContext) error {
return fmt.Errorf("Create Not implemented")
asJSON := ctx.OutputJSON()

orgname := ctx.Args[0]

organization, err := ctx.Client.API().CreateOrganization(orgname)
if err != nil {
return err
}

if asJSON {
ctx.WriteJSON(organization)
} else {
printOrg(*organization, true)
}

return nil
}

func runOrgsRemove(ctx *cmdctx.CmdContext) error {
Expand All @@ -97,6 +146,26 @@ func runOrgsRevoke(ctx *cmdctx.CmdContext) error {
return fmt.Errorf("Revoke Not implemented")
}

func runOrgsDestroy(ctx *cmdctx.CmdContext) error {
return fmt.Errorf("Destroy Not implemented")
func runOrgsDelete(ctx *cmdctx.CmdContext) error {
orgslug := ctx.Args[0]

orgid, err := getOrgId(ctx, orgslug)

if err != nil {
return err
}

confirmed := confirm(fmt.Sprintf("Are you sure you want to delete the %s organization?", orgslug))

if !confirmed {
return nil
}

_, err = ctx.Client.API().DeleteOrganization(orgid)

if err != nil {
return err
}

return nil
}

0 comments on commit 5800b00

Please sign in to comment.