summaryrefslogtreecommitdiff
path: root/interface/database.go
diff options
context:
space:
mode:
Diffstat (limited to 'interface/database.go')
-rw-r--r--interface/database.go116
1 files changed, 116 insertions, 0 deletions
diff --git a/interface/database.go b/interface/database.go
new file mode 100644
index 0000000..446b015
--- /dev/null
+++ b/interface/database.go
@@ -0,0 +1,116 @@
+package main
+
+import (
+ "database/sql"
+ "fmt"
+ _ "github.com/denisenkom/go-mssqldb"
+)
+
+type SQLConnection struct {
+ db *sql.DB
+}
+
+func (conn *SQLConnection) init() error {
+ //query := url.Values{}
+ //query.Add("app name", "MyAppName")
+ //
+ //u := &url.URL{
+ // Scheme: "sqlserver",
+ // User: url.UserPassword("sa", "Datab@sed1337"),
+ // Host: fmt.Sprintf("%s:%d", "", 1431),
+ // // Path: instance, // if connecting to an instance instead of a port
+ // RawQuery: query.Encode(),
+ //}
+ //var err error
+ //conn.db, err = sql.Open("sqlserver", u.String())
+ //return err
+ var err error
+ conn.db, err = sql.Open("sqlserver", "server=localhost;user id=sa;password=Datab@sed1337;")
+ return err
+}
+
+type Box struct {
+ id int
+ orderId int
+ warehouseId int
+ wrappingId int
+ volume float32
+ weight float32
+}
+
+func (conn *SQLConnection) getTables() ([]string, error) {
+ result, err := conn.db.Query(
+ `SELECT TABLE_CATALOG + '.' + TABLE_SCHEMA + '.' + TABLE_NAME as TABLE_NAME
+ FROM shipping.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'`)
+ if err != nil {
+ return nil, err
+ }
+
+ var tables []string
+ for result.Next() {
+ var row string
+ _ = result.Scan(&row)
+ tables = append(tables, row)
+ }
+
+ return tables, nil
+}
+
+func (conn *SQLConnection) getViews() ([]string, error) {
+ result, err := conn.db.Query(
+ `select name from sys.views where is_ms_shipped=0;`)
+ if err != nil {
+ return nil, err
+ }
+
+ var tables []string
+ for result.Next() {
+ var row string
+ _ = result.Scan(&row)
+ tables = append(tables, row)
+ }
+
+ return tables, nil
+}
+
+func (conn *SQLConnection) getColumns(table string) ([]string, error) {
+ result, err := conn.db.Query(fmt.Sprintf("SELECT TOP 1 * FROM %s", table))
+ if err != nil {
+ return nil, nil
+ }
+ return result.Columns()
+}
+
+func (conn *SQLConnection) getTable(table string) ([][]string, error) {
+ var err error
+ var msg [][]string
+
+ result, err := conn.db.Query(fmt.Sprintf("SELECT * FROM %s", table))
+ if err != nil {
+ return msg, err
+ }
+
+ 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)
+ }
+
+ //for result.Next() {
+ // var box Box
+ // err = result.Scan(
+ // &box.id, &box.orderId,
+ // &box.warehouseId,
+ // &box.wrappingId,
+ // &box.volume, &box.weight)
+ // msg = append(msg, box)
+ //}
+ _ = result.Close()
+
+ return msg, err
+}