type DatabaseResult = {
thread: {
id: number
}
message: {
id: number
thread_id: number
} | null
attachment: {
id: number
message_id: number
} | null
}[]
const toThread = (rows: DatabaseResult) =>
Effect.gen(function*() {
pipe(
rows,
Array.filter((row) => Predicate.isNotNull(row.message)),
Array.groupBy((row) => String(row.message.id)) // 'row.message' is possible 'null'!
)
})
type DatabaseResult = {
thread: {
id: number
}
message: {
id: number
thread_id: number
} | null
attachment: {
id: number
message_id: number
} | null
}[]
const toThread = (rows: DatabaseResult) =>
Effect.gen(function*() {
pipe(
rows,
Array.filter((row) => Predicate.isNotNull(row.message)),
Array.groupBy((row) => String(row.message.id)) // 'row.message' is possible 'null'!
)
})