1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-04-26 13:48:53 +08:00
Mainflux.mainflux/cli/channels.go
b1ackd0t 9a87e5cd1f
NOISSUE - Get user by ID and get all users by SDK (#1589)
* Add get user by id and get all users

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Remove print statement

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Add get user by id and get all users

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Remove print statement

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* rename userid

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* rename userid

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Add pagination

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Add tests

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* reduce user creation

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Add pagination to sdk

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Add offset and limits

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Remove exported variables

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Add filtering users value to sdk

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Add filtering to things and channels

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Linting

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Add struct embedding

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Change filtering variable names

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Change Name to Email

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Combined Paging struct

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* setting total, offset and limit even when zero

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Rename fields

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Rename pageMetadata

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Update tests

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Adding limit and offset size errors

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Update tests

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* ♻️

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* query by name, metadata or id

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Remove duplicate importation

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Remove duplicate pageMetadata

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* remove unused name

Signed-off-by: GitHub <noreply@github.com>

* Fix minor changes

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* use net/url to construct query params

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* simplify query

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* unexport method

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* Fix mock

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* update user

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* email and metadata as flags

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

* update help message

Signed-off-by: 0x6f736f646f <blackd0t@protonmail.com>

Co-authored-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
Co-authored-by: Drasko DRASKOVIC <drasko.draskovic@gmail.com>
2022-06-17 17:32:23 +02:00

178 lines
3.7 KiB
Go

// Copyright (c) Mainflux
// SPDX-License-Identifier: Apache-2.0
package cli
import (
"encoding/json"
mfxsdk "github.com/mainflux/mainflux/pkg/sdk/go"
"github.com/spf13/cobra"
)
var cmdChannels = []cobra.Command{
{
Use: "create <JSON_channel> <user_auth_token>",
Short: "Create channel",
Long: `Creates new channel and generates it's UUID`,
Run: func(cmd *cobra.Command, args []string) {
if len(args) != 2 {
logUsage(cmd.Use)
return
}
var channel mfxsdk.Channel
if err := json.Unmarshal([]byte(args[0]), &channel); err != nil {
logError(err)
return
}
id, err := sdk.CreateChannel(channel, args[1])
if err != nil {
logError(err)
return
}
logCreated(id)
},
},
{
Use: "get [all | <channel_id>] <user_auth_token>",
Short: "Get channel",
Long: `Get all channels or get channel by id. Channels can be filtered by name or metadata.
all - lists all channels
<channel_id> - shows thing with provided <channel_id>`,
Run: func(cmd *cobra.Command, args []string) {
if len(args) != 2 {
logUsage(cmd.Use)
return
}
metadata, err := convertMetadata(Metadata)
if err != nil {
logError(err)
return
}
pageMetadata := mfxsdk.PageMetadata{
Name: "",
Offset: uint64(Offset),
Limit: uint64(Limit),
Metadata: metadata,
}
if args[0] == "all" {
l, err := sdk.Channels(args[1], pageMetadata)
if err != nil {
logError(err)
return
}
logJSON(l)
return
}
c, err := sdk.Channel(args[0], args[1])
if err != nil {
logError(err)
return
}
logJSON(c)
},
},
{
Use: "updatev <JSON_string> <user_auth_token>",
Short: "Update channel",
Long: `Updates channel record`,
Run: func(cmd *cobra.Command, args []string) {
if len(args) != 2 {
logUsage(cmd.Use)
return
}
var channel mfxsdk.Channel
if err := json.Unmarshal([]byte(args[0]), &channel); err != nil {
logError(err)
return
}
if err := sdk.UpdateChannel(channel, args[1]); err != nil {
logError(err)
return
}
logOK()
},
},
{
Use: "delete <channel_id> <user_auth_token>",
Short: "Delete channel",
Long: `Delete channel by ID`,
Run: func(cmd *cobra.Command, args []string) {
if len(args) != 2 {
logUsage(cmd.Use)
return
}
if err := sdk.DeleteChannel(args[0], args[1]); err != nil {
logError(err)
return
}
logOK()
},
},
{
Use: "connections <channel_id> <user_auth_token>",
Short: "Connections list",
Long: `List of Things connected to a Channel`,
Run: func(cmd *cobra.Command, args []string) {
if len(args) != 2 {
logUsage(cmd.Use)
return
}
cl, err := sdk.ThingsByChannel(args[1], args[0], uint64(Offset), uint64(Limit), false)
if err != nil {
logError(err)
return
}
logJSON(cl)
},
},
{
Use: "not-connected <channel_id> <user_auth_token>",
Short: "Not-connected list",
Long: `List of Things not connected to a Channel`,
Run: func(cmd *cobra.Command, args []string) {
if len(args) != 2 {
logUsage(cmd.Use)
return
}
cl, err := sdk.ThingsByChannel(args[1], args[0], uint64(Offset), uint64(Limit), false)
if err != nil {
logError(err)
return
}
logJSON(cl)
},
},
}
// NewChannelsCmd returns channels command.
func NewChannelsCmd() *cobra.Command {
cmd := cobra.Command{
Use: "channels [create | get | update | delete | connections | not-connected]",
Short: "Channels management",
Long: `Channels management: create, get, update or delete Channel and get list of Things connected or not connected to a Channel`,
}
for i := range cmdChannels {
cmd.AddCommand(&cmdChannels[i])
}
return &cmd
}