diff options
| author | Andrew Guschin <guschin.drew@gmail.com> | 2022-05-31 11:58:02 +0400 |
|---|---|---|
| committer | Andrew Guschin <guschin.drew@gmail.com> | 2022-05-31 11:58:55 +0400 |
| commit | f0dc98b93c12e6428d84533bc4cc42210522548f (patch) | |
| tree | 61570027d4ebf84de9e6d02f382bc4b279495bc9 /interface/database.go | |
| parent | be8f64e35096b02339ac7100399167e5d0e3a8a6 (diff) | |
Добавление нескольких отчётов, представлений для UPDATE и SELECT
Diffstat (limited to 'interface/database.go')
| -rw-r--r-- | interface/database.go | 76 |
1 files changed, 72 insertions, 4 deletions
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 +} |