Skip to content

Latest commit

 

History

History

sql-querier

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Описание

Для практики использования пакета database/sql мы напишем консольное приложение, которое будет выполнять запросы к PostgreSQL базе используя github.com/lib/pq драйвер.

В качестве данных будем использовать базу данных Northwind. База будет запущена в docker контейнере, а приложение будет подключаться к ней используя прокинутый из контейнера порт. Все скрипты по запуску и остановке базы данных будут находиться в Makefile.

  • make stop-db - останавливает базу данных
  • make run-db - запускает базу данных
  • make run-queries - запускает приложение. При первом запуске используйте make run-queries INIT=true для инициализации базы данных

Задание

Вам необходимо запустить базу в контейнере, а потом реализовать все методы в Querier так, чтобы при запуске приложения оно выполняло все запросы и выводило результаты в консоль.

Плюсом будет:

  • написание своих запросов, которые вы найдете интересными
  • рефакторинг кода, чтобы устранить повторяющиеся части кода связанные со сканированием данных из результата запроса

Обратите внимание

Embedded SQL

import (
	"database/sql"
	_ "embed"             // necessary to use go:embed directive
	_ "github.com/lib/pq" // load "postgres" driver
)

//go:embed northwind.sql
var initScript string

Мы используем директиву go:embed для того чтобы встроить в бинарник SQL скрипт, который будет использоваться для инициализации базы данных. Для этого мы должны сделать import "embed" и для того чтобы импорт, который мы не используем не вызывал ошибку, мы делаем _ "embed".

Для похожих целей мы также импортируем драйвер для PostgreSQL _ "github.com/lib/pq". Он должен находится в приложении чтобы пакет database/sql мог его использовать, но так как мы напрямую его использовать не будем, нам нужно его импортировать с подчеркиванием