snapshot of https://github.com/sqlc-dev/sqlc.git (main, 2026-09-16; blobs > 131072B omitted)
Some checks failed
kotlin / test (push) Has been skipped
python / test (push) Has been skipped
typescript / test (push) Has been skipped
go / build darwin/amd64 (push) Has been cancelled
go / build linux/amd64 (push) Has been cancelled
go / build windows/amd64 (push) Has been cancelled
go / build darwin/arm64 (push) Has been cancelled
go / build linux/arm64 (push) Has been cancelled
go / build windows/arm64 (push) Has been cancelled
go / test (push) Has been cancelled
go / vuln_check (push) Has been cancelled
Some checks failed
kotlin / test (push) Has been skipped
python / test (push) Has been skipped
typescript / test (push) Has been skipped
go / build darwin/amd64 (push) Has been cancelled
go / build linux/amd64 (push) Has been cancelled
go / build windows/amd64 (push) Has been cancelled
go / build darwin/arm64 (push) Has been cancelled
go / build linux/arm64 (push) Has been cancelled
go / build windows/arm64 (push) Has been cancelled
go / test (push) Has been cancelled
go / vuln_check (push) Has been cancelled
This commit is contained in:
31
internal/endtoend/testdata/join_left/sqlite/go/db.go
vendored
Normal file
31
internal/endtoend/testdata/join_left/sqlite/go/db.go
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.31.1
|
||||
|
||||
package querytest
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
type DBTX interface {
|
||||
ExecContext(context.Context, string, ...any) (sql.Result, error)
|
||||
PrepareContext(context.Context, string) (*sql.Stmt, error)
|
||||
QueryContext(context.Context, string, ...any) (*sql.Rows, error)
|
||||
QueryRowContext(context.Context, string, ...any) *sql.Row
|
||||
}
|
||||
|
||||
func New(db DBTX) *Queries {
|
||||
return &Queries{db: db}
|
||||
}
|
||||
|
||||
type Queries struct {
|
||||
db DBTX
|
||||
}
|
||||
|
||||
func (q *Queries) WithTx(tx *sql.Tx) *Queries {
|
||||
return &Queries{
|
||||
db: tx,
|
||||
}
|
||||
}
|
||||
60
internal/endtoend/testdata/join_left/sqlite/go/models.go
vendored
Normal file
60
internal/endtoend/testdata/join_left/sqlite/go/models.go
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.31.1
|
||||
|
||||
package querytest
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Author struct {
|
||||
ID int64
|
||||
Name string
|
||||
ParentID sql.NullInt64
|
||||
}
|
||||
|
||||
type City struct {
|
||||
CityID int64
|
||||
MayorID int64
|
||||
}
|
||||
|
||||
type Mayor struct {
|
||||
MayorID int64
|
||||
FullName string
|
||||
}
|
||||
|
||||
type Medium struct {
|
||||
MediaID int64
|
||||
MediaCreatedAt time.Time
|
||||
MediaHash string
|
||||
MediaDirectory string
|
||||
MediaAuthorID int64
|
||||
MediaWidth int64
|
||||
MediaHeight int64
|
||||
}
|
||||
|
||||
type SuperAuthor struct {
|
||||
SuperID int64
|
||||
SuperName string
|
||||
SuperParentID sql.NullInt64
|
||||
}
|
||||
|
||||
type User struct {
|
||||
UserID int64
|
||||
CityID sql.NullInt64
|
||||
}
|
||||
|
||||
type Users2 struct {
|
||||
UserID int64
|
||||
UserNickname string
|
||||
UserEmail string
|
||||
UserDisplayName string
|
||||
UserPassword sql.NullString
|
||||
UserGoogleID sql.NullString
|
||||
UserAppleID sql.NullString
|
||||
UserBio string
|
||||
UserCreatedAt time.Time
|
||||
UserAvatarID sql.NullInt64
|
||||
}
|
||||
456
internal/endtoend/testdata/join_left/sqlite/go/query.sql.go
vendored
Normal file
456
internal/endtoend/testdata/join_left/sqlite/go/query.sql.go
vendored
Normal file
@@ -0,0 +1,456 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.31.1
|
||||
// source: query.sql
|
||||
|
||||
package querytest
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"time"
|
||||
)
|
||||
|
||||
const allAuthors = `-- name: AllAuthors :many
|
||||
SELECT a.id, a.name, a.parent_id, p.id, p.name, p.parent_id
|
||||
FROM authors AS a
|
||||
LEFT JOIN authors AS p ON a.parent_id = p.id
|
||||
`
|
||||
|
||||
type AllAuthorsRow struct {
|
||||
ID int64
|
||||
Name string
|
||||
ParentID sql.NullInt64
|
||||
ID_2 sql.NullInt64
|
||||
Name_2 sql.NullString
|
||||
ParentID_2 sql.NullInt64
|
||||
}
|
||||
|
||||
func (q *Queries) AllAuthors(ctx context.Context) ([]AllAuthorsRow, error) {
|
||||
rows, err := q.db.QueryContext(ctx, allAuthors)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []AllAuthorsRow
|
||||
for rows.Next() {
|
||||
var i AllAuthorsRow
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.Name,
|
||||
&i.ParentID,
|
||||
&i.ID_2,
|
||||
&i.Name_2,
|
||||
&i.ParentID_2,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const allAuthorsAliases = `-- name: AllAuthorsAliases :many
|
||||
SELECT a.id, a.name, a.parent_id, p.id, p.name, p.parent_id
|
||||
FROM authors AS a
|
||||
LEFT JOIN authors AS p ON a.parent_id = p.id
|
||||
`
|
||||
|
||||
type AllAuthorsAliasesRow struct {
|
||||
ID int64
|
||||
Name string
|
||||
ParentID sql.NullInt64
|
||||
ID_2 sql.NullInt64
|
||||
Name_2 sql.NullString
|
||||
ParentID_2 sql.NullInt64
|
||||
}
|
||||
|
||||
func (q *Queries) AllAuthorsAliases(ctx context.Context) ([]AllAuthorsAliasesRow, error) {
|
||||
rows, err := q.db.QueryContext(ctx, allAuthorsAliases)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []AllAuthorsAliasesRow
|
||||
for rows.Next() {
|
||||
var i AllAuthorsAliasesRow
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.Name,
|
||||
&i.ParentID,
|
||||
&i.ID_2,
|
||||
&i.Name_2,
|
||||
&i.ParentID_2,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const allAuthorsAliases2 = `-- name: AllAuthorsAliases2 :many
|
||||
SELECT a.id, a.name, a.parent_id, p.id, p.name, p.parent_id
|
||||
FROM authors AS a
|
||||
LEFT JOIN authors AS p ON a.parent_id = p.id
|
||||
`
|
||||
|
||||
type AllAuthorsAliases2Row struct {
|
||||
ID int64
|
||||
Name string
|
||||
ParentID sql.NullInt64
|
||||
ID_2 sql.NullInt64
|
||||
Name_2 sql.NullString
|
||||
ParentID_2 sql.NullInt64
|
||||
}
|
||||
|
||||
func (q *Queries) AllAuthorsAliases2(ctx context.Context) ([]AllAuthorsAliases2Row, error) {
|
||||
rows, err := q.db.QueryContext(ctx, allAuthorsAliases2)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []AllAuthorsAliases2Row
|
||||
for rows.Next() {
|
||||
var i AllAuthorsAliases2Row
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.Name,
|
||||
&i.ParentID,
|
||||
&i.ID_2,
|
||||
&i.Name_2,
|
||||
&i.ParentID_2,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const allSuperAuthors = `-- name: AllSuperAuthors :many
|
||||
SELECT id, name, parent_id, super_id, super_name, super_parent_id
|
||||
FROM authors
|
||||
LEFT JOIN super_authors ON authors.parent_id = super_authors.super_id
|
||||
`
|
||||
|
||||
type AllSuperAuthorsRow struct {
|
||||
ID int64
|
||||
Name string
|
||||
ParentID sql.NullInt64
|
||||
SuperID sql.NullInt64
|
||||
SuperName sql.NullString
|
||||
SuperParentID sql.NullInt64
|
||||
}
|
||||
|
||||
func (q *Queries) AllSuperAuthors(ctx context.Context) ([]AllSuperAuthorsRow, error) {
|
||||
rows, err := q.db.QueryContext(ctx, allSuperAuthors)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []AllSuperAuthorsRow
|
||||
for rows.Next() {
|
||||
var i AllSuperAuthorsRow
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.Name,
|
||||
&i.ParentID,
|
||||
&i.SuperID,
|
||||
&i.SuperName,
|
||||
&i.SuperParentID,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const allSuperAuthorsAliases = `-- name: AllSuperAuthorsAliases :many
|
||||
SELECT id, name, parent_id, super_id, super_name, super_parent_id
|
||||
FROM authors AS a
|
||||
LEFT JOIN super_authors AS sa ON a.parent_id = sa.super_id
|
||||
`
|
||||
|
||||
type AllSuperAuthorsAliasesRow struct {
|
||||
ID int64
|
||||
Name string
|
||||
ParentID sql.NullInt64
|
||||
SuperID sql.NullInt64
|
||||
SuperName sql.NullString
|
||||
SuperParentID sql.NullInt64
|
||||
}
|
||||
|
||||
func (q *Queries) AllSuperAuthorsAliases(ctx context.Context) ([]AllSuperAuthorsAliasesRow, error) {
|
||||
rows, err := q.db.QueryContext(ctx, allSuperAuthorsAliases)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []AllSuperAuthorsAliasesRow
|
||||
for rows.Next() {
|
||||
var i AllSuperAuthorsAliasesRow
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.Name,
|
||||
&i.ParentID,
|
||||
&i.SuperID,
|
||||
&i.SuperName,
|
||||
&i.SuperParentID,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const allSuperAuthorsAliases2 = `-- name: AllSuperAuthorsAliases2 :many
|
||||
SELECT a.id, a.name, a.parent_id, sa.super_id, sa.super_name, sa.super_parent_id
|
||||
FROM authors AS a
|
||||
LEFT JOIN super_authors AS sa ON a.parent_id = sa.super_id
|
||||
`
|
||||
|
||||
type AllSuperAuthorsAliases2Row struct {
|
||||
ID int64
|
||||
Name string
|
||||
ParentID sql.NullInt64
|
||||
SuperID sql.NullInt64
|
||||
SuperName sql.NullString
|
||||
SuperParentID sql.NullInt64
|
||||
}
|
||||
|
||||
func (q *Queries) AllSuperAuthorsAliases2(ctx context.Context) ([]AllSuperAuthorsAliases2Row, error) {
|
||||
rows, err := q.db.QueryContext(ctx, allSuperAuthorsAliases2)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []AllSuperAuthorsAliases2Row
|
||||
for rows.Next() {
|
||||
var i AllSuperAuthorsAliases2Row
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.Name,
|
||||
&i.ParentID,
|
||||
&i.SuperID,
|
||||
&i.SuperName,
|
||||
&i.SuperParentID,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const getMayors = `-- name: GetMayors :many
|
||||
SELECT
|
||||
user_id,
|
||||
mayors.full_name
|
||||
FROM users
|
||||
LEFT JOIN cities USING (city_id)
|
||||
JOIN mayors USING (mayor_id)
|
||||
`
|
||||
|
||||
type GetMayorsRow struct {
|
||||
UserID int64
|
||||
FullName string
|
||||
}
|
||||
|
||||
func (q *Queries) GetMayors(ctx context.Context) ([]GetMayorsRow, error) {
|
||||
rows, err := q.db.QueryContext(ctx, getMayors)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []GetMayorsRow
|
||||
for rows.Next() {
|
||||
var i GetMayorsRow
|
||||
if err := rows.Scan(&i.UserID, &i.FullName); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const getMayorsOptional = `-- name: GetMayorsOptional :many
|
||||
SELECT
|
||||
user_id,
|
||||
cities.city_id,
|
||||
mayors.full_name
|
||||
FROM users
|
||||
LEFT JOIN cities USING (city_id)
|
||||
LEFT JOIN mayors USING (mayor_id)
|
||||
`
|
||||
|
||||
type GetMayorsOptionalRow struct {
|
||||
UserID int64
|
||||
CityID sql.NullInt64
|
||||
FullName sql.NullString
|
||||
}
|
||||
|
||||
func (q *Queries) GetMayorsOptional(ctx context.Context) ([]GetMayorsOptionalRow, error) {
|
||||
rows, err := q.db.QueryContext(ctx, getMayorsOptional)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []GetMayorsOptionalRow
|
||||
for rows.Next() {
|
||||
var i GetMayorsOptionalRow
|
||||
if err := rows.Scan(&i.UserID, &i.CityID, &i.FullName); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const getSuggestedUsersByID = `-- name: GetSuggestedUsersByID :many
|
||||
SELECT DISTINCT u.user_id, u.user_nickname, u.user_email, u.user_display_name, u.user_password, u.user_google_id, u.user_apple_id, u.user_bio, u.user_created_at, u.user_avatar_id, m.media_id, m.media_created_at, m.media_hash, m.media_directory, m.media_author_id, m.media_width, m.media_height
|
||||
FROM users_2 AS u
|
||||
LEFT JOIN media AS m ON u.user_avatar_id = m.media_id
|
||||
WHERE u.user_id != ?1
|
||||
`
|
||||
|
||||
type GetSuggestedUsersByIDRow struct {
|
||||
UserID int64
|
||||
UserNickname string
|
||||
UserEmail string
|
||||
UserDisplayName string
|
||||
UserPassword sql.NullString
|
||||
UserGoogleID sql.NullString
|
||||
UserAppleID sql.NullString
|
||||
UserBio string
|
||||
UserCreatedAt time.Time
|
||||
UserAvatarID sql.NullInt64
|
||||
MediaID sql.NullInt64
|
||||
MediaCreatedAt sql.NullTime
|
||||
MediaHash sql.NullString
|
||||
MediaDirectory sql.NullString
|
||||
MediaAuthorID sql.NullInt64
|
||||
MediaWidth sql.NullInt64
|
||||
MediaHeight sql.NullInt64
|
||||
}
|
||||
|
||||
func (q *Queries) GetSuggestedUsersByID(ctx context.Context, userID int64) ([]GetSuggestedUsersByIDRow, error) {
|
||||
rows, err := q.db.QueryContext(ctx, getSuggestedUsersByID, userID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []GetSuggestedUsersByIDRow
|
||||
for rows.Next() {
|
||||
var i GetSuggestedUsersByIDRow
|
||||
if err := rows.Scan(
|
||||
&i.UserID,
|
||||
&i.UserNickname,
|
||||
&i.UserEmail,
|
||||
&i.UserDisplayName,
|
||||
&i.UserPassword,
|
||||
&i.UserGoogleID,
|
||||
&i.UserAppleID,
|
||||
&i.UserBio,
|
||||
&i.UserCreatedAt,
|
||||
&i.UserAvatarID,
|
||||
&i.MediaID,
|
||||
&i.MediaCreatedAt,
|
||||
&i.MediaHash,
|
||||
&i.MediaDirectory,
|
||||
&i.MediaAuthorID,
|
||||
&i.MediaWidth,
|
||||
&i.MediaHeight,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const getSuggestedUsersByID2 = `-- name: GetSuggestedUsersByID2 :many
|
||||
SELECT users_2.user_id
|
||||
FROM users_2
|
||||
LEFT JOIN media AS m ON user_avatar_id = m.media_id
|
||||
WHERE user_id != ?1
|
||||
`
|
||||
|
||||
func (q *Queries) GetSuggestedUsersByID2(ctx context.Context, userID int64) ([]int64, error) {
|
||||
rows, err := q.db.QueryContext(ctx, getSuggestedUsersByID2, userID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []int64
|
||||
for rows.Next() {
|
||||
var user_id int64
|
||||
if err := rows.Scan(&user_id); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, user_id)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
58
internal/endtoend/testdata/join_left/sqlite/query.sql
vendored
Normal file
58
internal/endtoend/testdata/join_left/sqlite/query.sql
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
-- name: GetMayors :many
|
||||
SELECT
|
||||
user_id,
|
||||
mayors.full_name
|
||||
FROM users
|
||||
LEFT JOIN cities USING (city_id)
|
||||
JOIN mayors USING (mayor_id);
|
||||
|
||||
-- name: GetMayorsOptional :many
|
||||
SELECT
|
||||
user_id,
|
||||
cities.city_id,
|
||||
mayors.full_name
|
||||
FROM users
|
||||
LEFT JOIN cities USING (city_id)
|
||||
LEFT JOIN mayors USING (mayor_id);
|
||||
|
||||
-- name: AllAuthors :many
|
||||
SELECT *
|
||||
FROM authors AS a
|
||||
LEFT JOIN authors AS p ON a.parent_id = p.id;
|
||||
|
||||
-- name: AllAuthorsAliases :many
|
||||
SELECT *
|
||||
FROM authors AS a
|
||||
LEFT JOIN authors AS p ON a.parent_id = p.id;
|
||||
|
||||
-- name: AllSuperAuthors :many
|
||||
SELECT *
|
||||
FROM authors
|
||||
LEFT JOIN super_authors ON authors.parent_id = super_authors.super_id;
|
||||
|
||||
-- name: AllAuthorsAliases2 :many
|
||||
SELECT a.*, p.*
|
||||
FROM authors AS a
|
||||
LEFT JOIN authors AS p ON a.parent_id = p.id;
|
||||
|
||||
-- name: AllSuperAuthorsAliases :many
|
||||
SELECT *
|
||||
FROM authors AS a
|
||||
LEFT JOIN super_authors AS sa ON a.parent_id = sa.super_id;
|
||||
|
||||
-- name: AllSuperAuthorsAliases2 :many
|
||||
SELECT a.*, sa.*
|
||||
FROM authors AS a
|
||||
LEFT JOIN super_authors AS sa ON a.parent_id = sa.super_id;
|
||||
|
||||
-- name: GetSuggestedUsersByID :many
|
||||
SELECT DISTINCT u.*, m.*
|
||||
FROM users_2 AS u
|
||||
LEFT JOIN media AS m ON u.user_avatar_id = m.media_id
|
||||
WHERE u.user_id != @user_id;
|
||||
|
||||
-- name: GetSuggestedUsersByID2 :many
|
||||
SELECT users_2.user_id
|
||||
FROM users_2
|
||||
LEFT JOIN media AS m ON user_avatar_id = m.media_id
|
||||
WHERE user_id != @user_id;
|
||||
50
internal/endtoend/testdata/join_left/sqlite/schema.sql
vendored
Normal file
50
internal/endtoend/testdata/join_left/sqlite/schema.sql
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
-- https://github.com/sqlc-dev/sqlc/issues/604
|
||||
CREATE TABLE users (
|
||||
user_id INT PRIMARY KEY,
|
||||
city_id INT -- nullable
|
||||
);
|
||||
CREATE TABLE cities (
|
||||
city_id INT PRIMARY KEY,
|
||||
mayor_id INT NOT NULL
|
||||
);
|
||||
CREATE TABLE mayors (
|
||||
mayor_id INT PRIMARY KEY,
|
||||
full_name TEXT NOT NULL
|
||||
);
|
||||
|
||||
-- https://github.com/sqlc-dev/sqlc/issues/1334
|
||||
CREATE TABLE authors (
|
||||
id INT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
parent_id INT -- nullable
|
||||
);
|
||||
|
||||
CREATE TABLE super_authors (
|
||||
super_id INT PRIMARY KEY,
|
||||
super_name TEXT NOT NULL,
|
||||
super_parent_id INT -- nullable
|
||||
);
|
||||
|
||||
-- https://github.com/sqlc-dev/sqlc/issues/1334
|
||||
CREATE TABLE users_2 (
|
||||
user_id INT PRIMARY KEY,
|
||||
user_nickname VARCHAR(30) UNIQUE NOT NULL,
|
||||
user_email TEXT UNIQUE NOT NULL,
|
||||
user_display_name TEXT NOT NULL,
|
||||
user_password TEXT ,
|
||||
user_google_id TEXT UNIQUE ,
|
||||
user_apple_id TEXT UNIQUE ,
|
||||
user_bio VARCHAR(160) NOT NULL DEFAULT '',
|
||||
user_created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
user_avatar_id INT UNIQUE
|
||||
);
|
||||
|
||||
CREATE TABLE media (
|
||||
media_id INT PRIMARY KEY,
|
||||
media_created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
media_hash TEXT NOT NULL,
|
||||
media_directory TEXT NOT NULL,
|
||||
media_author_id INT NOT NULL,
|
||||
media_width INT NOT NULL,
|
||||
media_height INT NOT NULL
|
||||
);
|
||||
12
internal/endtoend/testdata/join_left/sqlite/sqlc.json
vendored
Normal file
12
internal/endtoend/testdata/join_left/sqlite/sqlc.json
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"version": "1",
|
||||
"packages": [
|
||||
{
|
||||
"path": "go",
|
||||
"engine": "sqlite",
|
||||
"name": "querytest",
|
||||
"schema": "schema.sql",
|
||||
"queries": "query.sql"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user