Mercurial Hosting > lang
view src/lib/Course.luan @ 60:285029931499
minor
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 18 Aug 2025 10:18:10 +0900 |
parents | 6c78fd83518f |
children | 2ff1f78bb13e |
line wrap: on
line source
local Luan = require "luan:Luan.luan" local error = Luan.error local ipairs = Luan.ipairs or error() local Number = require "luan:Number.luan" local long = Number.long or error() local Html = require "luan:Html.luan" local html_encode = Html.encode or error() local Db = require "site:/lib/Db.luan" local Shared = require "site:/lib/Shared.luan" local languages = Shared.languages or error() local Course = {} local function from_doc(doc) doc.type == "course" or error "wrong type" return Course.new { id = doc.id user_id = doc.course_user_id language = doc.course_language updated = doc.course_updated name = doc.name ai_system_prompt = doc.ai_system_prompt ai_first_message = doc.ai_first_message tts_instructions = doc.tts_instructions has_ruby = doc.has_ruby == "true" } end local function to_doc(course) return { type = "course" id = course.id course_user_id = long(course.user_id) course_language = course.language or error() course_updated = long(course.updated) name = course.name or error() ai_system_prompt = course.ai_system_prompt or error() ai_first_message = course.ai_first_message tts_instructions = course.tts_instructions has_ruby = course.has_ruby and "true" or nil } end function Course.new(course) function course.save() local doc = to_doc(course) Db.save(doc) course.id = doc.id end function course.delete() Db.delete("id:"..course.id) end function course.name_html() return html_encode(course.name) end function course.language_name() return languages[course.language] end return course end function Course.search(query,sort,rows) rows = rows or 1000000 local courses = {} local docs = Db.search(query,1,rows,{sort=sort}) for _, doc in ipairs(docs) do courses[#courses+1] = from_doc(doc) end return courses end function Course.get_by_id(id) local doc = Db.get_document("id:"..id) return doc and doc.type=="course" and from_doc(doc) or nil end return Course