redis-orm-node
Version:
`redis-orm` is a lightweight Object-Relational Mapping (ORM) library for Node.js.
83 lines (79 loc) • 2.31 kB
text/typescript
import { SchemaFieldTypes } from "redis"
import { Operators } from "../types"
import { Equal, Like, Not } from "../operators/FindOperators"
import { OperatorMapper } from "./operators"
import { SchemaPropertyType } from "../types/SchemaProperty"
type Cases = {
input: {
propertyName: string,
operator: Operators,
propertyType: SchemaPropertyType
}
output: string
}
const cases: Cases[] = [
{
input: {
propertyName: "name",
operator: Like("Dazai"),
propertyType: SchemaFieldTypes.TEXT
},
output: "@name:(Dazai)"
},
{
input: {
propertyName: "id",
operator: Like("task:9461dfe9-41f7-4a04-bc1c-ce2e3855d00f"),
propertyType: SchemaFieldTypes.TAG
},
output: "@id:{task:9461dfe9-41f7-4a04-bc1c-ce2e3855d00f}"
},
{
input: {
propertyName: "taskId",
operator: Equal("task:9461dfe9-41f7-4a04-bc1c-ce2e3855d00f"),
propertyType: SchemaFieldTypes.TAG
},
output: "@taskId:{task\\:9461dfe9\\-41f7\\-4a04\\-bc1c\\-ce2e3855d00f}"
},
{
input: {
propertyName: "name",
operator: Like("Dazai"),
propertyType: SchemaFieldTypes.TAG
},
output: "@name:{Dazai}"
},
{
input: {
propertyName: "name",
operator: Not(Like("Dazai")),
propertyType: SchemaFieldTypes.TEXT
},
output: "-@name:(Dazai)"
},
{
input: {
propertyName: "age",
operator: Equal(15),
propertyType: SchemaFieldTypes.NUMERIC
},
output: "@age:[15 15]"
},
{
input: {
propertyName: "age",
operator: Not(Equal(15)),
propertyType: SchemaFieldTypes.NUMERIC
},
output: "-@age:[15 15]"
},
]
describe("convert operator to filter", () => {
cases.forEach(({ input, output }) =>
it("input to Equal output", () => {
const result = OperatorMapper(input.operator, input.propertyName, input.propertyType)
expect(result).toEqual(output)
})
)
})