Skip to content

Option to Segregate Read and Write queries to have separate db users with each type of query. #3187

Open
@K-odesome

Description

@K-odesome

What do you want to change?

Usecase is to have seperate set of queries generated for read access and write access.
For example if I have read user of Mysql , I will not be able to prepare the update , insert statement from it because sqlc generates everything in one compiled list of queries.

The solution is to generate two separate prepared folder but then it would result in lot of code duplication of models also getting generated.

Can we have a solution where we can get the objects in separate set of queries which could be used to prepare from corresponding db users.

Current Behaviour :


-- name: SelectTable
Select * from table;

-- name: InsertTable
Insert into Table values (1,2,3);

output generated from it

type Queries struct {
	db                                DBTX
	tx                                *sql.Tx
	selectTable  *sql.Stmt
	insertTable      *sql.Stmt
}

Now I cant use this Queries struct with my read db user and it fails during the prepare method call becase the queries have both select and insert queries.

Feature request : On generate command it should generate something like

type ReadQueries struct {
	selectTable  *sql.Stmt
}
type WriteQueries struct {
	insertTable  *sql.Stmt
}

and these corresponding queries can be used with corresponding mysql db users context while preparing.

What database engines need to be changed?

PostgreSQL, MySQL, SQLite

What programming language backends need to be changed?

Go

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions