database.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package database
  2. import (
  3. "log"
  4. "github.com/rqlite/gorqlite"
  5. )
  6. const NETWORKS_TABLE_NAME = "networks"
  7. const NODES_TABLE_NAME = "nodes"
  8. const USERS_TABLE_NAME = "users"
  9. const DNS_TABLE_NAME = "dns"
  10. const EXT_CLIENT_TABLE_NAME = "extclients"
  11. const INT_CLIENTS_TABLE_NAME = "intclients"
  12. const DATABASE_FILENAME = "netmaker.db"
  13. var Database gorqlite.Connection
  14. func InitializeDatabase() error {
  15. conn, err := gorqlite.Open("http://")
  16. if err != nil {
  17. return err
  18. }
  19. // sqliteDatabase, _ := sql.Open("sqlite3", "./database/"+dbFilename)
  20. Database = conn
  21. Database.SetConsistencyLevel("strong")
  22. createTables()
  23. return nil
  24. }
  25. func createTables() {
  26. createTable(NETWORKS_TABLE_NAME)
  27. createTable(NODES_TABLE_NAME)
  28. createTable(USERS_TABLE_NAME)
  29. createTable(DNS_TABLE_NAME)
  30. createTable(EXT_CLIENT_TABLE_NAME)
  31. createTable(INT_CLIENTS_TABLE_NAME)
  32. }
  33. func createTable(tableName string) error {
  34. _, err := Database.WriteOne("CREATE TABLE IF NOT EXISTS " + tableName + " (key TEXT NOT NULL UNIQUE PRIMARY KEY, value TEXT)")
  35. if err != nil {
  36. return err
  37. }
  38. return nil
  39. }
  40. func Insert(key string, value string, tableName string) error {
  41. _, err := Database.WriteOne("INSERT OR REPLACE INTO " + tableName + " (key, value) VALUES ('" + key + "', '" + value + "')")
  42. if err != nil {
  43. return err
  44. }
  45. return nil
  46. }
  47. func DeleteRecord(tableName string, key string) error {
  48. _, err := Database.WriteOne("DELETE FROM " + tableName + " WHERE key = \"" + key + "\"")
  49. if err != nil {
  50. return err
  51. }
  52. return nil
  53. }
  54. func DeleteAllRecords(tableName string) error {
  55. _, err := Database.WriteOne("DELETE TABLE " + tableName)
  56. if err != nil {
  57. return err
  58. }
  59. err = createTable(tableName)
  60. if err != nil {
  61. return err
  62. }
  63. return nil
  64. }
  65. func FetchRecord(tableName string, key string) (string, error) {
  66. results, err := FetchRecords(tableName)
  67. if err != nil {
  68. return "", err
  69. }
  70. return results[key], nil
  71. }
  72. func FetchRecords(tableName string) (map[string]string, error) {
  73. row, err := Database.QueryOne("SELECT * FROM " + tableName + " ORDER BY key")
  74. if err != nil {
  75. return nil, err
  76. }
  77. records := make(map[string]string)
  78. for row.Next() { // Iterate and fetch the records from result cursor
  79. var key string
  80. var value string
  81. row.Scan(&key, &value)
  82. records[key] = value
  83. }
  84. log.Println(tableName, records)
  85. return records, nil
  86. }