구조적 SQL 조각
보간이 값을 넣는 대신 SQL 구조를 바꾼다면 구조 헬퍼를 쓰세요.
const column = sql.ident("created_at");const direction = sql.raw(sortDescending ? "DESC" : "ASC");const ids = sql.list([10, 20, 30]);
const query = sql.rows<UserRow>` SELECT id, name FROM users WHERE id IN (${ids}) ORDER BY ${column} ${direction}`;sql.ident("schema.table")은 식별자의 각 부분을 따옴표로 감쌉니다.sql.fragment는 방언에 묶인 조각을 만듭니다. 조각 안에 일반 바인딩을 넣을 수 있습니다.sql.list(values)는 값마다 바인딩을 하나씩 만듭니다. 빈 배열은 거부합니다.sql.join(fragments, separator)는 조각만 결합합니다. 일반 값은 거부합니다.sql.raw(text)는 신뢰하는 SQL 텍스트를 따옴표 없이 그대로 넣습니다.sql.empty는 방언에 묶인 빈 조각입니다.
모든 조각은 자신을 만든 방언을 기억합니다. PostgreSQL 조각을 MySQL이나 SQLite 태그와 섞으면 SQLBraid가 BRAID_DIALECT를 던집니다.
사용자의 선택이 sql.ident나 sql.raw에 도달하기 전에, 안전한 헬퍼로 선택지를 제한할 수 있습니다.
const columns = { name: sql.ident("name"), created: sql.ident("created_at") } as const;const order = columns[sortKey as keyof typeof columns] ?? columns.name;sql.raw는 일부러 눈에 띄게 남겨 두었습니다. SQLBraid는 임의의 SQL 텍스트가 신뢰할 만한지 증명할 수 없습니다.