From f0dc98b93c12e6428d84533bc4cc42210522548f Mon Sep 17 00:00:00 2001 From: Andrew Guschin Date: Tue, 31 May 2022 11:58:02 +0400 Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BD=D0=B5=D1=81=D0=BA=D0=BE=D0=BB=D1=8C=D0=BA=D0=B8?= =?UTF-8?q?=D1=85=20=D0=BE=D1=82=D1=87=D1=91=D1=82=D0=BE=D0=B2,=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D1=81=D1=82=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B9=20=D0=B4=D0=BB=D1=8F=20UPDATE=20=D0=B8=20SELECT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- interface/database.go | 76 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 72 insertions(+), 4 deletions(-) (limited to 'interface/database.go') diff --git a/interface/database.go b/interface/database.go index 1d77827..71ee211 100644 --- a/interface/database.go +++ b/interface/database.go @@ -87,7 +87,7 @@ func (conn *SQLConnection) getIdentityColumns(table string) ([]string, error) { for result.Next() { boxes := make([]string, len(cols)) dest := make([]interface{}, len(cols)) - for i, _ := range dest { + for i := range dest { dest[i] = &boxes[i] } _ = result.Scan(dest...) @@ -110,7 +110,7 @@ func (conn *SQLConnection) getTable(table string) ([][]string, error) { for result.Next() { boxes := make([]string, len(cols)) dest := make([]interface{}, len(cols)) - for i, _ := range dest { + for i := range dest { dest[i] = &boxes[i] } _ = result.Scan(dest...) @@ -133,7 +133,7 @@ func (conn *SQLConnection) getOneToManyTable(manyTable string, manyColumn string for result.Next() { boxes := make([]string, len(cols)) dest := make([]interface{}, len(cols)) - for i, _ := range dest { + for i := range dest { dest[i] = &boxes[i] } _ = result.Scan(dest...) @@ -143,11 +143,25 @@ func (conn *SQLConnection) getOneToManyTable(manyTable string, manyColumn string return msg, nil } -func (conn *SQLConnection) deleteWhere(table string, constraint string) error { +func (conn *SQLConnection) deleteWhere(table string, constraints []string) error { + constraint := strings.Join(constraints, " AND ") _, err := conn.db.Query(fmt.Sprintf("DELETE FROM %s WHERE %s", table, constraint)) return err } +func (conn *SQLConnection) updateRow(table string, updateColumns []string, updateValues []string, id string) error { + var updates []string + for i := 0; i < len(updateColumns); i += 1 { + updates = append(updates, fmt.Sprintf("%s = N'%s'", updateColumns[i], updateValues[i])) + } + _, err := conn.db.Query(fmt.Sprintf( + "UPDATE %s SET %s WHERE id = %s", + table, + strings.Join(updates, ", "), + id)) + return err +} + func (conn *SQLConnection) insertIntoTable(table string, columns []string, values []string) error { _, err := conn.db.Query(fmt.Sprintf( "INSERT INTO %s (%s) VALUES (N'%s')", @@ -156,3 +170,57 @@ func (conn *SQLConnection) insertIntoTable(table string, columns []string, value strings.Join(values, "',N'"))) return err } + +func (conn *SQLConnection) selectWhere(table string, fields []string, constraints []string) ([][]string, []string, error) { + var err error + var result *sql.Rows + field := strings.Join(fields, ", ") + if len(constraints) == 0 { + result, err = conn.db.Query(fmt.Sprintf("SELECT %s FROM %s", field, table)) + } else { + constraint := strings.Join(constraints, " AND ") + result, err = conn.db.Query(fmt.Sprintf("SELECT %s FROM %s WHERE %s", field, table, constraint)) + } + + if err != nil { + return nil, nil, err + } + + var msg [][]string + cols, _ := result.Columns() + for result.Next() { + boxes := make([]string, len(cols)) + dest := make([]interface{}, len(cols)) + for i := range dest { + dest[i] = &boxes[i] + } + _ = result.Scan(dest...) + msg = append(msg, boxes) + } + _ = result.Close() + + return msg, cols, nil +} + +func (conn *SQLConnection) executeSelect(query string) ([][]string, []string, error) { + result, err := conn.db.Query(query) + + if err != nil { + return nil, nil, err + } + + var msg [][]string + cols, _ := result.Columns() + for result.Next() { + boxes := make([]string, len(cols)) + dest := make([]interface{}, len(cols)) + for i := range dest { + dest[i] = &boxes[i] + } + _ = result.Scan(dest...) + msg = append(msg, boxes) + } + _ = result.Close() + + return msg, cols, nil +} -- cgit v1.2.3