VGrabko
@VGrabko
Golang, Php, Js

Как в го реализовать полифоризм?

У меня есть абстрактный пакет nsql. Я хочу сделать драйвера к разным nosql бд. (аля аналог пакета database/sql только для nosql). Как вообще это делать правильно?
  • Вопрос задан
  • 351 просмотр
Решения вопроса 3
0xcffaedfe
@0xcffaedfe
Developer & Reverser
Зачем если есть?
https://github.com/avelino/awesome-go#database-drivers

func InitDatabase(driver, dbPath string) error {
	var db gorm.DB
	var err error

	switch driver {
	case "sqlite3":
		db, err = gorm.Open("sqlite3", dbPath)
		if err != nil {
			return err
		}
		break
	case "mysql":
		db, err = gorm.Open("mysql", dbPath)
		if err != nil {
			return err
		}
		break
	case "postgres":
		db, err = gorm.Open("postgres", dbPath)
		if err != nil {
			return err
		}
		break
	default:
		return fmt.Errorf("Unknown database driver of %v", driver)
	}
Ответ написан
bitver
@bitver
Ответ написан
Комментировать
@ivahaev
Программист, связист и просто хороший человек
Как я понимаю, в пакете должен быть описан некий интерфейс для СУБД. Если нужно добавить поддержку новой базы, то её драйвер должен будет реализовать этот интерфейс.

Например, у Стива есть пакет aerofs – абстрактная файловая система. Для поддержки новой ФС пишется структура, реализующая соответствующие интерфейсы, и подключается к пакету.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы