API Reference / @evolu/common / Evolu/Public / kysely / jsonArrayFrom

Function: jsonArrayFrom()

function jsonArrayFrom<O>(expr): RawBuilder<Simplify<O>[]>;

Defined in: packages/common/src/Evolu/PublicKysely.ts:70

A SQLite helper for aggregating a subquery into a JSON array.

Examples

import { kysely } from "@evolu/common";

// TODO: Update for Evolu
const result = await db
  .selectFrom("person")
  .select((eb) => [
    "id",
    kysely
      .jsonArrayFrom(
        eb
          .selectFrom("pet")
          .select(["pet.id as pet_id", "pet.name"])
          .whereRef("pet.owner_id", "=", "person.id")
          .orderBy("pet.name"),
      )
      .as("pets"),
  ])
  .execute();

result[0]?.id;
result[0]?.pets[0].pet_id;
result[0]?.pets[0].name;

The generated SQL (SQLite):

select "id", (
  select coalesce(json_group_array(json_object(
    'pet_id', "agg"."pet_id",
    'name', "agg"."name"
  )), '[]') from (
    select "pet"."id" as "pet_id", "pet"."name"
    from "pet"
    where "pet"."owner_id" = "person"."id"
    order by "pet"."name"
  ) as "agg"
) as "pets"
from "person"

Type Parameters

Type Parameter
O

Parameters

ParameterType
exprSelectQueryBuilderExpression<O>

Returns

RawBuilder<Simplify<O>[]>

Was this page helpful?