##SQLboiler

This rule allows to generate sqlboiler models and ORM code for golang from a stack of SQL migrations.

It uses sql-migrate, sqlboiler and sqlboiker-crdb.

###How to use

Create a package and create a 0_initial.sql file with the following template:

-- +migrate Up

Your initial SQL goes here

-- +migrate Down

Then create a BUILD file with the following rules:

load("//build/sqlboiler:sqlboiler.bzl", "go_sqlboiler_library", "sqlboiler")
load("@io_bazel_rules_go//go:def.bzl", "go_library")

# gazelle:ignore .

sqlboiler(
    name = "sqlboiler",
    srcs = glob(["*.sql"]),
    tables = [
        <your table names>
    ],
)

go_sqlboiler_library(
    name = "sqlboiler_lib",
    importpath = "git.monogon.dev/source/nexantic.git/<target>",
    sqlboiler = ":sqlboiler",
)

go_library(
    name = "go_default_library",
    embed = [":sqlboiler_lib"],
    importpath = "git.monogon.dev/source/nexantic.git/<target>",
    visibility = ["//visibility:public"],
)

Replace target with your intended importpath and add all created tables to the tables argument of the sqlboiler rule.

Running the tasks will apply the migrations to a temporary database using sql-migrate and generate sqlboiler code from it. The code will be importable from the specified importpath.

When making changes to the schema please generate new migrations using the <n>_<description>.sql pattern for file names. The migrations will automatically be applied and the models updated.

Make sure to also update the tables argument when creating new tables in migrations.