database_core.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. //go:build !mipsle && !riscv64
  2. // +build !mipsle,!riscv64
  3. package database
  4. import (
  5. "errors"
  6. "imuslab.com/zoraxy/mod/database/dbbolt"
  7. "imuslab.com/zoraxy/mod/database/dbinc"
  8. "imuslab.com/zoraxy/mod/database/dbleveldb"
  9. )
  10. func newDatabase(dbfile string, backendType dbinc.BackendType) (*Database, error) {
  11. if backendType == dbinc.BackendFSOnly {
  12. return nil, errors.New("Unsupported backend type for this platform")
  13. }
  14. if backendType == dbinc.BackendLevelDB {
  15. db, err := dbleveldb.NewDB(dbfile)
  16. return &Database{
  17. Db: nil,
  18. BackendType: backendType,
  19. Backend: db,
  20. }, err
  21. }
  22. db, err := dbbolt.NewBoltDatabase(dbfile)
  23. return &Database{
  24. Db: nil,
  25. BackendType: backendType,
  26. Backend: db,
  27. }, err
  28. }
  29. func (d *Database) newTable(tableName string) error {
  30. return d.Backend.NewTable(tableName)
  31. }
  32. func (d *Database) tableExists(tableName string) bool {
  33. return d.Backend.TableExists(tableName)
  34. }
  35. func (d *Database) dropTable(tableName string) error {
  36. return d.Backend.DropTable(tableName)
  37. }
  38. func (d *Database) write(tableName string, key string, value interface{}) error {
  39. return d.Backend.Write(tableName, key, value)
  40. }
  41. func (d *Database) read(tableName string, key string, assignee interface{}) error {
  42. return d.Backend.Read(tableName, key, assignee)
  43. }
  44. func (d *Database) keyExists(tableName string, key string) bool {
  45. return d.Backend.KeyExists(tableName, key)
  46. }
  47. func (d *Database) delete(tableName string, key string) error {
  48. return d.Backend.Delete(tableName, key)
  49. }
  50. func (d *Database) listTable(tableName string) ([][][]byte, error) {
  51. return d.Backend.ListTable(tableName)
  52. }
  53. func (d *Database) close() {
  54. d.Backend.Close()
  55. }