You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

adapter.go 1.6 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package casdoor
  2. import (
  3. "runtime"
  4. "github.com/astaxie/beego"
  5. _ "github.com/go-sql-driver/mysql"
  6. "xorm.io/xorm"
  7. )
  8. var adapter *Adapter = nil
  9. var CasdoorOrganization string
  10. type Session struct {
  11. SessionKey string `xorm:"char(64) notnull pk"`
  12. SessionData []uint8 `xorm:"blob"`
  13. SessionExpiry int `xorm:"notnull"`
  14. }
  15. func InitCasdoorAdapter() {
  16. casdoorDbName := beego.AppConfig.String("casdoorDbName")
  17. if casdoorDbName == "" {
  18. return
  19. }
  20. adapter = NewAdapter(beego.AppConfig.String("driverName"), beego.AppConfig.String("dataSourceName"), beego.AppConfig.String("casdoorDbName"))
  21. CasdoorOrganization = beego.AppConfig.String("casdoorOrganization")
  22. }
  23. // Adapter represents the MySQL adapter for policy storage.
  24. type Adapter struct {
  25. driverName string
  26. dataSourceName string
  27. dbName string
  28. Engine *xorm.Engine
  29. }
  30. // finalizer is the destructor for Adapter.
  31. func finalizer(a *Adapter) {
  32. err := a.Engine.Close()
  33. if err != nil {
  34. panic(err)
  35. }
  36. }
  37. // NewAdapter is the constructor for Adapter.
  38. func NewAdapter(driverName string, dataSourceName string, dbName string) *Adapter {
  39. a := &Adapter{}
  40. a.driverName = driverName
  41. a.dataSourceName = dataSourceName
  42. a.dbName = dbName
  43. // Open the DB, create it if not existed.
  44. a.open()
  45. // Call the destructor when the object is released.
  46. runtime.SetFinalizer(a, finalizer)
  47. return a
  48. }
  49. func (a *Adapter) open() {
  50. Engine, err := xorm.NewEngine(a.driverName, a.dataSourceName+a.dbName)
  51. if err != nil {
  52. panic(err)
  53. }
  54. a.Engine = Engine
  55. }
  56. func (a *Adapter) close() {
  57. a.Engine.Close()
  58. a.Engine = nil
  59. }

基于Casbin的开源AI领域知识库平台

Contributors (1)