Introduce typed semantic analysis pipeline
This commit is contained in:
parent
117d188194
commit
f4cd4f4458
30 changed files with 2079 additions and 2381 deletions
|
|
@ -34,7 +34,11 @@ func TestSQLGeneratedNullableAndLockingMetadata(t *testing.T) {
|
|||
if row.Fields[3].Type != "time.Time?" {
|
||||
t.Fatalf("publishedAt type = %q, want time.Time?", row.Fields[3].Type)
|
||||
}
|
||||
if got := mapGoType(row.Fields[3].Type); got != "*time.Time" {
|
||||
typ, err := ParseType(row.Fields[3].Type)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if got := renderGoType(typ); got != "*time.Time" {
|
||||
t.Fatalf("mapped nullable timestamp = %q, want *time.Time", got)
|
||||
}
|
||||
|
||||
|
|
@ -64,7 +68,7 @@ func TestSQLTypedProjectionExecution(t *testing.T) {
|
|||
import context
|
||||
import pgxpool "github.com/jackc/pgx/v5/pgxpool"
|
||||
|
||||
fun events(pool: *pgxpool.Pool, ctx: context.Context): List<*EventProjection> {
|
||||
fun events(pool: *pgxpool.Pool, ctx: context.Context): List<EventProjection> {
|
||||
return sql.from<EventRow>()
|
||||
.select { row -> EventProjection(row.id, row.payload) }
|
||||
.orderBy { it.createdAt }
|
||||
|
|
@ -94,7 +98,7 @@ func TestSQLInsertOmitsGeneratedAndReturnsProjection(t *testing.T) {
|
|||
import context
|
||||
import pgxpool "github.com/jackc/pgx/v5/pgxpool"
|
||||
|
||||
fun create(row: EventRow, pool: *pgxpool.Pool, ctx: context.Context): *EventProjection {
|
||||
fun create(row: EventRow, pool: *pgxpool.Pool, ctx: context.Context): EventProjection {
|
||||
return sql.insert<EventRow>(row)
|
||||
.returning { value -> EventProjection(value.id, value.payload) }
|
||||
.single(pool, ctx).unwrap()
|
||||
|
|
@ -126,7 +130,7 @@ func TestSQLTypedUpdateAndReturning(t *testing.T) {
|
|||
import context
|
||||
import pgxpool "github.com/jackc/pgx/v5/pgxpool"
|
||||
|
||||
fun claim(id: String, payload: String, pool: *pgxpool.Pool, ctx: context.Context): *EventProjection {
|
||||
fun claim(id: String, payload: String, pool: *pgxpool.Pool, ctx: context.Context): EventProjection {
|
||||
return sql.update<EventRow>()
|
||||
.set { row ->
|
||||
set(row.payload, payload)
|
||||
|
|
@ -154,7 +158,7 @@ func TestSQLDeleteReturningFullRow(t *testing.T) {
|
|||
import context
|
||||
import pgxpool "github.com/jackc/pgx/v5/pgxpool"
|
||||
|
||||
fun remove(id: String, pool: *pgxpool.Pool, ctx: context.Context): *EventRow {
|
||||
fun remove(id: String, pool: *pgxpool.Pool, ctx: context.Context): EventRow {
|
||||
return sql.delete<EventRow>()
|
||||
.where { it.id == id }
|
||||
.returning { it }
|
||||
|
|
@ -245,7 +249,7 @@ func TestRejectExpandedInvalidSQLQueries(t *testing.T) {
|
|||
},
|
||||
{
|
||||
name: "write execution without returning",
|
||||
src: eventSQLSource + `fun query(pool: Any, ctx: Any): *EventRow { return sql.delete<EventRow>().single(pool, ctx).unwrap() }`,
|
||||
src: eventSQLSource + `fun query(pool: Any, ctx: Any): EventRow { return sql.delete<EventRow>().single(pool, ctx).unwrap() }`,
|
||||
want: "requires returning()",
|
||||
},
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue