กำหนด Schema
Primitives
lua
prism:string()
prism:number()
prism:boolean()
prism:enum()
prism:array()
prism:object()
prism:extends()
prism:union()Optional Field
กำหนดประเภทข้อมูลแบบไม่บังคับ
lua
prism:[TYPE].optional()
-- Example
prism:string().optional()Nullable
กำหนดประเภทข้อมูลสามารถเป็น NULL ได้ (จากการใช้ json.decode)
lua
prism:string().nullable()
prism:number().nullable()
prism:boolean().nullable()
prism:enum().nullable()
prism:array().nullable()
prism:object().nullable()Default
กำหนดข้อมูลเริ่มต้นก่อนการ Parse ในกรณีที่ข้อมูลส่งมาเป็น nil
lua
prism:string().default('Hello')
prism:number().default(55)
prism:boolean().default(true)
prism:enum().default('SOME_DEFAULT')
prism:array().default({})
prism:object().default({})Transform
เปลี่ยนข้อมูลหลังจาก Validate เสร็จสิ้น (จะทำงานเมื่อ Schema ถูกต้อง)
lua
prism:string().transform(function(value) return string.lower(value) end)
prism:number().transform(function(value) return value * 1.0 end)
prism:boolean().transform(function(value) return not value end)
prism:enum().transform(function(value) return string.upper(value) end)
prism:array().transform(function(value)
value[#value + 1] = 5
return value
end)
prism:object().transform(function(value)
value.validated = true
return value
end)Nullable, Default, Transform เฉพาะในเวอร์ชั่น 1.1.0
- Methods นี้มีเฉพาะเวอร์ชั่น 1.1.0 ขึ้นไปเท่านั้น
- ไม่สามารถใช้กับ
Unionได้
Strings
lua
prism:string().max(5)
prism:string().min(5)
prism:string().startsWith('https://')
prism:string().endsWith('/look-up-prism')
prism:string().email()
prism:string().identifier()Numbers
lua
prism:number().max(10)
prism:number().min(10)Booleans
lua
prism:boolean()Enums
lua
prism:enum({ 'NO_ENUM', 'YES_ENUM', 'WORK_ENUM' })
--- สามารถเป็นตัวเลือกไหนก็ได้ภายในนี้Arrays
lua
prism:array(prism:string()).max(50)
prism:array(prism:string()).min(50)
prism:array(
prism:object({
index = prism:number(),
value = prism:string()
})
)Objects
lua
prism:object(...).passthrough() --- เลิกใช้งานแล้ว: ให้ใช้ catchall
prism:object(...).catchall() -- ฟังก์ชั่นทดแทน passthrough
prism:object({
type = prism:string(),
data = prism:object().catchall()
})Extends
lua
local person = prism:object({
name = prism:string()
})
local nameWithAge = prism:extends(person, {
age = prism:number()
})Unions
lua
prism:union({ prism:string(), prism:number() })
--- สามารถเป็นประเภทของอะไรได้ก็ภายในนี้ (string หรือ number)
--- ไม่สามารถส่ง Array เข้ามาในนี้ได้