From e3a294ae861c9f3741e851da4ee05a8383da2b3b Mon Sep 17 00:00:00 2001 From: Sergey Fedotenkov Date: Sun, 12 Feb 2017 22:27:17 +0300 Subject: [PATCH 1/7] Add unique constraint for label and user_id #22 --- models/namespace/namespace.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/namespace/namespace.sql b/models/namespace/namespace.sql index 1d7e265..eff953c 100644 --- a/models/namespace/namespace.sql +++ b/models/namespace/namespace.sql @@ -1,8 +1,8 @@ CREATE TABLE IF NOT EXISTS public.namespaces ( id uuid NOT NULL DEFAULT uuid_generate_v4(), - label character varying, - user_id uuid NOT NULL references users(user_id), + label character varying UNIQUE, + user_id uuid NOT NULL UNIQUE references users(user_id), created timestamp without time zone NOT NULL DEFAULT statement_timestamp(), active boolean NOT NULL DEFAULT false, removed boolean NOT NULL DEFAULT false, From 3b6c5b1f46139cc9d4f4f0b1fabebaf406a0292e Mon Sep 17 00:00:00 2001 From: Sergey Fedotenkov Date: Sun, 12 Feb 2017 22:49:00 +0300 Subject: [PATCH 2/7] Add return Namespace.ID for Add method #22 --- models/namespace/sql.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/models/namespace/sql.go b/models/namespace/sql.go index 68d22e0..d96c0cc 100644 --- a/models/namespace/sql.go +++ b/models/namespace/sql.go @@ -6,11 +6,26 @@ import ( ) // Add (Namespace, *bool) - Добавление новой записи в таблице Namespace. Передаются только: label, user_id -func (_ *Namespace) Add(ns Namespace, ok *bool) error { +func (_ *Namespace) Add(nameserver Namespace, id *string) error { query := "INSERT INTO namespaces(label, user_id) VALUES($1, $2)" - err := queryExecutionHandler(query, ns.Label, ns.UserID) - *ok = checkErr(err) - return err + err := queryExecutionHandler(query, nameserver.Label, nameserver.UserID) + ns := Namespace{} + row := db.QueryRow("SELECT * FROM namespaces WHERE label = $1", nameserver.Label) + err = row.Scan( + &ns.ID, + &ns.Label, + &ns.UserID, + &ns.Created, + &ns.Active, + &ns.Removed, + &ns.KubeExist, + ) + if err != nil { + return err + } + + *id = ns.ID + return nil } // Delete (Namespace, *bool) - изменение removed -> true From 088ca584bab39b494dbebe3cd8897fb3e637cece Mon Sep 17 00:00:00 2001 From: Sergey Fedotenkov Date: Sun, 12 Feb 2017 22:49:47 +0300 Subject: [PATCH 3/7] Remove duplicate func rowNumbersHandler --- models/namespace/namespace.go | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/models/namespace/namespace.go b/models/namespace/namespace.go index 11bfcc5..de62b1d 100644 --- a/models/namespace/namespace.go +++ b/models/namespace/namespace.go @@ -1,9 +1,6 @@ package namespace -import ( - "database/sql" - "errors" -) +import "database/sql" type Namespace struct { ID string @@ -23,16 +20,6 @@ func checkErr(err error) bool { } return true } - -// Проверяет колличество обработаных записей, если не было обработано ни одной - возвращает ошибку noRowsProcessedError, иначе nil. -func rowNumbersHandler(row sql.Result) error { - noRowsProcessedError := errors.New("Failed to update the namespace. Maybe there is no namespace with such ID in the database.") - rowsNumber, err := row.RowsAffected() - if err != nil { - return err - } - if rowsNumber < 1 { - return noRowsProcessedError - } - return err +func SetDB(sdb *sql.DB) { + db = sdb } From 5e5a886778222fa66fb442fe1adf7271398dec13 Mon Sep 17 00:00:00 2001 From: Sergey Fedotenkov Date: Sun, 12 Feb 2017 22:50:53 +0300 Subject: [PATCH 4/7] Rename Get -> GetById method #22 --- models/namespace/sql.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/namespace/sql.go b/models/namespace/sql.go index d96c0cc..aafaa31 100644 --- a/models/namespace/sql.go +++ b/models/namespace/sql.go @@ -64,8 +64,8 @@ func (_ *Namespace) GetAll(userId string, resp *[]Namespace) error { } -// Get (id string, *Namespace) - возврат конкретного Namespace пользователя -func (_ *Namespace) Get(id string, resp *Namespace) error { +// GetById (id string, *Namespace) - возврат конкретного Namespace пользователя +func (_ *Namespace) GetById(id string, resp *Namespace) error { ns := Namespace{} row := db.QueryRow("SELECT * FROM namespaces WHERE id = $1", id) err := row.Scan(&ns.ID, From 0aded30dc1b20013febb129e249eb2c680add834 Mon Sep 17 00:00:00 2001 From: Sergey Fedotenkov Date: Sun, 12 Feb 2017 22:56:19 +0300 Subject: [PATCH 5/7] Add Get method #22 --- models/namespace/sql.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/models/namespace/sql.go b/models/namespace/sql.go index aafaa31..d980cef 100644 --- a/models/namespace/sql.go +++ b/models/namespace/sql.go @@ -64,6 +64,27 @@ func (_ *Namespace) GetAll(userId string, resp *[]Namespace) error { } +// Get(Namespace, *Namespace). Возврат Namespace по label, user_id +func (_ *Namespace) Get(namespace Namespace, resp *Namespace) error { + ns := Namespace{} + row := db.QueryRow("SELECT * FROM namespaces WHERE label = $1 and user_id = $2", namespace.Label, namespace.UserID) + err := row.Scan(&ns.ID, + &ns.Label, + &ns.UserID, + &ns.Created, + &ns.Active, + &ns.Removed, + &ns.KubeExist, + ) + if err != nil { + return err + } + + *resp = ns + return nil + +} + // GetById (id string, *Namespace) - возврат конкретного Namespace пользователя func (_ *Namespace) GetById(id string, resp *Namespace) error { ns := Namespace{} From 6900fdaea6c39526c84ef54e6713bfb6d60b2df5 Mon Sep 17 00:00:00 2001 From: Sergey Fedotenkov Date: Sun, 12 Feb 2017 22:59:35 +0300 Subject: [PATCH 6/7] Edit Delete(Namespace, *bool) -> DeleteById(string, *bool) method #22 --- models/namespace/sql.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/namespace/sql.go b/models/namespace/sql.go index d980cef..9e354de 100644 --- a/models/namespace/sql.go +++ b/models/namespace/sql.go @@ -29,9 +29,9 @@ func (_ *Namespace) Add(nameserver Namespace, id *string) error { } // Delete (Namespace, *bool) - изменение removed -> true -func (_ *Namespace) Delete(ns Namespace, ok *bool) error { +func (_ *Namespace) DeleteById(id string, ok *bool) error { query := "UPDATE namespaces SET removed=TRUE where id=$1" - err := queryExecutionHandler(query, ns.ID) + err := queryExecutionHandler(query, id) *ok = checkErr(err) return err } From 721396c27ffeb5b486729ce474e06c1f543e7ca6 Mon Sep 17 00:00:00 2001 From: Sergey Fedotenkov Date: Sun, 12 Feb 2017 23:00:13 +0300 Subject: [PATCH 7/7] Edit Rename -> RenameById method #22 --- models/namespace/sql.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/namespace/sql.go b/models/namespace/sql.go index 9e354de..7c8c141 100644 --- a/models/namespace/sql.go +++ b/models/namespace/sql.go @@ -139,7 +139,7 @@ func (_ *Namespace) DeletedInKube(id string, ok *bool) error { } // Rename (Namespace, *bool) - изменение label -func (_ *Namespace) Rename(ns Namespace, ok *bool) error { +func (_ *Namespace) RenameById(ns Namespace, ok *bool) error { query := "UPDATE namespaces SET label=$1 where id=$2" err := queryExecutionHandler(query, ns.Label, ns.ID) *ok = checkErr(err)