mirror of
https://github.com/absmach/supermq.git
synced 2026-06-23 04:20:17 +00:00
2ef8437d8b
* add access control to rules engine Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * add access control to reports Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * add access control to alarms Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * fix failing linter Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * remove unused variables Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * update authorization method Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * revert code Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * remove roles Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * update alarm permissions Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * update alarm permissions Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * address comments Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * fix tests Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * revert endpoint changes Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * fix make fetch Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * revert env variable Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * remove rule prefix Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * remove trailing line Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * remove unused constants Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * re consumer Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * update listing Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * fix tests Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * fix linter Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * fix rule roles interface Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * refactor listing commands Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * fetch supermq Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * address coments Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * update script Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * address comments Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * fetch supermq Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * fix time layout Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * fix failing linter Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * fix failing linter Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * fix role name Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * fix failing linter Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * address comments Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * remove white spaces Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * update check usperadmin method Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * update go mod file Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * fix tests Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> * add missing env variable Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> --------- Signed-off-by: nyagamunene <stevenyaga2014@gmail.com>
66 lines
2.2 KiB
Go
66 lines
2.2 KiB
Go
// Copyright (c) Abstract Machines
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package postgres
|
|
|
|
import (
|
|
rpostgres "github.com/absmach/magistrala/re/postgres"
|
|
"github.com/absmach/supermq/pkg/errors"
|
|
repoerr "github.com/absmach/supermq/pkg/errors/repository"
|
|
_ "github.com/jackc/pgx/v5/stdlib" // required for SQL access
|
|
migrate "github.com/rubenv/sql-migrate"
|
|
)
|
|
|
|
// Migration of Alarms service.
|
|
func Migration() (*migrate.MemoryMigrationSource, error) {
|
|
alarmsMigration := &migrate.MemoryMigrationSource{
|
|
Migrations: []*migrate.Migration{
|
|
{
|
|
Id: "alarms_01",
|
|
// VARCHAR(36) for columns with IDs as UUIDS have a maximum of 36 characters
|
|
Up: []string{
|
|
`CREATE TABLE IF NOT EXISTS alarms (
|
|
id VARCHAR(36) PRIMARY KEY,
|
|
rule_id VARCHAR(36) NOT NULL CHECK (length(rule_id) > 0),
|
|
domain_id VARCHAR(36) NOT NULL,
|
|
channel_id VARCHAR(36) NOT NULL,
|
|
subtopic TEXT NOT NULL,
|
|
client_id VARCHAR(36) NOT NULL,
|
|
measurement TEXT NOT NULL,
|
|
value TEXT NOT NULL,
|
|
unit TEXT NOT NULL,
|
|
threshold TEXT NOT NULL,
|
|
cause TEXT NOT NULL,
|
|
status SMALLINT NOT NULL DEFAULT 0 CHECK (status >= 0),
|
|
severity SMALLINT NOT NULL DEFAULT 0 CHECK (severity >= 0),
|
|
assignee_id VARCHAR(36),
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMPTZ NULL,
|
|
updated_by VARCHAR(36) NULL,
|
|
assigned_at TIMESTAMPTZ NULL,
|
|
assigned_by VARCHAR(36) NULL,
|
|
acknowledged_at TIMESTAMPTZ NULL,
|
|
acknowledged_by VARCHAR(36) NULL,
|
|
resolved_at TIMESTAMPTZ NULL,
|
|
resolved_by VARCHAR(36) NULL,
|
|
metadata JSONB
|
|
);`,
|
|
"CREATE INDEX IF NOT EXISTS idx_alarms_state ON alarms (domain_id, rule_id, channel_id, subtopic, client_id, measurement, created_at DESC);",
|
|
},
|
|
Down: []string{
|
|
`DROP TABLE IF EXISTS alarms`,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
rulesMigration, err := rpostgres.Migration()
|
|
if err != nil {
|
|
return &migrate.MemoryMigrationSource{}, errors.Wrap(repoerr.ErrRoleMigration, err)
|
|
}
|
|
|
|
alarmsMigration.Migrations = append(alarmsMigration.Migrations, rulesMigration.Migrations...)
|
|
|
|
return alarmsMigration, nil
|
|
}
|