mirror of
https://github.com/mainflux/mainflux.git
synced 2025-05-04 22:17:59 +08:00

* Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix error Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import alias Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add linter to CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix merge issues Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add gofumpt Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove multiple gofupmt in CI Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unnecessary changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> --------- Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>
81 lines
1.6 KiB
Go
81 lines
1.6 KiB
Go
// Copyright (c) Mainflux
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package db
|
|
|
|
import (
|
|
"encoding/csv"
|
|
"io"
|
|
"os"
|
|
|
|
"github.com/mainflux/mainflux/pkg/errors"
|
|
)
|
|
|
|
const (
|
|
columns = 2
|
|
path = "/store/nodes.csv"
|
|
)
|
|
|
|
var (
|
|
errNotFound = errors.New("file not found")
|
|
errWriteFile = errors.New("failed de write file")
|
|
errOpenFile = errors.New("failed to open file")
|
|
errReadFile = errors.New("failed to read file")
|
|
errEmptyLine = errors.New("empty or incomplete line found in file")
|
|
)
|
|
|
|
// Node represents an OPC-UA node.
|
|
type Node struct {
|
|
ServerURI string
|
|
NodeID string
|
|
}
|
|
|
|
// Save stores a successful subscription.
|
|
func Save(serverURI, nodeID string) error {
|
|
file, err := os.OpenFile(path, os.O_CREATE|os.O_APPEND|os.O_WRONLY, os.ModePerm)
|
|
if err != nil {
|
|
return errors.Wrap(errWriteFile, err)
|
|
}
|
|
csvWriter := csv.NewWriter(file)
|
|
err = csvWriter.Write([]string{serverURI, nodeID})
|
|
csvWriter.Flush()
|
|
if err != nil {
|
|
return errors.Wrap(errWriteFile, err)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// ReadAll returns all stored subscriptions.
|
|
func ReadAll() ([]Node, error) {
|
|
if _, err := os.Stat(path); os.IsNotExist(err) {
|
|
return nil, errors.Wrap(errNotFound, err)
|
|
}
|
|
|
|
file, err := os.OpenFile(path, os.O_RDONLY, os.ModePerm)
|
|
if err != nil {
|
|
return nil, errors.Wrap(errOpenFile, err)
|
|
}
|
|
defer file.Close()
|
|
|
|
reader := csv.NewReader(file)
|
|
nodes := []Node{}
|
|
for {
|
|
l, err := reader.Read()
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
if err != nil {
|
|
return nil, errors.Wrap(errReadFile, err)
|
|
}
|
|
|
|
if len(l) < columns {
|
|
return nil, errEmptyLine
|
|
}
|
|
|
|
nodes = append(nodes, Node{l[0], l[1]})
|
|
}
|
|
|
|
return nodes, nil
|
|
}
|