2
0

(variables) Add session option in variables (#1490)

Closes #1488
This commit is contained in:
Baptiste Arnaud
2024-05-02 15:11:16 +02:00
committed by GitHub
parent 87653f8e10
commit b4ae098440
20 changed files with 156 additions and 82 deletions

View File

@ -1,7 +1,7 @@
import prisma from '@typebot.io/lib/prisma'
import { Prisma } from '@typebot.io/prisma'
import { TypebotInSession } from '@typebot.io/schemas'
import { filterVariablesWithValues } from '@typebot.io/variables/filterVariablesWithValues'
import { filterNonSessionVariablesWithValues } from '@typebot.io/variables/filterVariablesWithValues'
type Props = {
resultId: string
@ -15,7 +15,9 @@ export const upsertResult = ({
hasStarted,
isCompleted,
}: Props): Prisma.PrismaPromise<any> => {
const variablesWithValue = filterVariablesWithValues(typebot.variables)
const variablesWithValue = filterNonSessionVariablesWithValues(
typebot.variables
)
return prisma.result.upsert({
where: { id: resultId },
update: {

View File

@ -149,7 +149,8 @@ const parseVariablesHeaders = (
if (
existingInputResultHeaders.some((existingInputResultHeader) =>
existingInputResultHeader.variableIds?.includes(variable.id)
)
) ||
variable.isSessionVariable
)
return existingHeaders

View File

@ -2,27 +2,27 @@ import { z } from '../../zod'
export const listVariableValue = z.array(z.string().nullable())
export const variableSchema = z.object({
const baseVariableSchema = z.object({
id: z.string(),
name: z.string(),
isSessionVariable: z.boolean().optional(),
})
export const variableSchema = baseVariableSchema.extend({
value: z.string().or(listVariableValue).nullish(),
})
/**
* Variable when retrieved from the database
*/
export const variableWithValueSchema = z.object({
id: z.string(),
name: z.string(),
export const variableWithValueSchema = baseVariableSchema.extend({
value: z.string().or(listVariableValue),
})
/**
* Variable when computed or retrieved from a block
*/
const VariableWithUnknowValueSchema = z.object({
id: z.string(),
name: z.string(),
const VariableWithUnknowValueSchema = baseVariableSchema.extend({
value: z.unknown(),
})

View File

@ -1,9 +1,9 @@
import { isDefined } from '@typebot.io/lib'
import { Variable, VariableWithValue } from '../schemas'
export const filterVariablesWithValues = (
export const filterNonSessionVariablesWithValues = (
variables: Variable[]
): VariableWithValue[] =>
variables.filter((variable) =>
isDefined(variable.value)
variables.filter(
(variable) => isDefined(variable.value) && !variable.isSessionVariable
) as VariableWithValue[]