CreateModule registers a virtual table implementation. See: http://sqlite.org/c3ref/create_module.html
(moduleName string, module Module)
| 742 | // CreateModule registers a virtual table implementation. |
| 743 | // See: http://sqlite.org/c3ref/create_module.html |
| 744 | func (c *SQLiteConn) CreateModule(moduleName string, module Module) error { |
| 745 | mname := C.CString(moduleName) |
| 746 | defer C.free(unsafe.Pointer(mname)) |
| 747 | udm := sqliteModule{c, moduleName, module} |
| 748 | switch module.(type) { |
| 749 | case EponymousOnlyModule: |
| 750 | rv := C._sqlite3_create_module_eponymous_only(c.db, mname, C.uintptr_t(uintptr(newHandle(c, &udm)))) |
| 751 | if rv != C.SQLITE_OK { |
| 752 | return c.lastError() |
| 753 | } |
| 754 | return nil |
| 755 | case Module: |
| 756 | rv := C._sqlite3_create_module(c.db, mname, C.uintptr_t(uintptr(newHandle(c, &udm)))) |
| 757 | if rv != C.SQLITE_OK { |
| 758 | return c.lastError() |
| 759 | } |
| 760 | return nil |
| 761 | } |
| 762 | return fmt.Errorf("sqlite3: CreateModule requires a non-nil module") |
| 763 | } |