Skip to content

Unused struct is being generated into models.go #710

Closed
@yeka

Description

@yeka

sqlc.yaml

version: "1"
packages:
  - name: "authors"
    path: "generated/repo/authors"
    queries: "./files/queries/authors.sql"
    schema: "./files/schema/"
    engine: "postgresql"
    emit_json_tags: true
    emit_prepared_queries: false
    emit_interface: false
    emit_exact_table_names: false
  - name: "books"
    path: "generated/repo/books"
    queries: "./files/queries/books.sql"
    schema: "./files/schema/"
    engine: "postgresql"
    emit_json_tags: true
    emit_prepared_queries: false
    emit_interface: false
    emit_exact_table_names: false

The ./files/schema/ directory contains golang-migrate files.

000001_authors.up.sql

CREATE TABLE authors (
    id   BIGSERIAL PRIMARY KEY,
    name text      NOT NULL,
    bio  text
);

000002_books.up.sql

CREATE TABLE books (
    id SERIAL PRIMARY KEY,
    title VARCHAR(120) NOT NULL
);

And directory ./files/queries contains sql queries for sqlc.

authors.sql

-- name: ListAuthors :many
SELECT * FROM authors
ORDER BY name;

books.sql

-- name: ListBooks :many
SELECT * FROM books;

When I run sqlc generate, it will generate ./generated/repo/authors/ and ./generated/repo/books as expected.
When I see the ./generated/repo/authors/models.go and ./generated/repo/books/models.go, both have 2 struct types which is Author and Book.

models.go

// Code generated by sqlc. DO NOT EDIT.

package books

import (
	"database/sql"
)

type Author struct {
	ID   int64          `json:"id"`
	Name string         `json:"name"`
	Bio  sql.NullString `json:"bio"`
}

type Book struct {
	ID    int32  `json:"id"`
	Title string `json:"title"`
}

In books package, Author type in unused, and in authors package Book type is unused.
I assumed it's generated from database schema because both package use the same schema in sqlc.yaml.
Is it possible not to generate unused struct in models.go?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions