Mercurial Hosting > lang
view src/lib/Course.luan @ 46:cc20eebaa74a
use openai tts
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 14 Aug 2025 11:27:34 +0900 |
parents | 3a80ddafe5a4 |
children | 27758f3b2d69 |
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 } 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 } end function Course.new(course) function course.save() local doc = to_doc(course) Db.save(doc) course.id = doc.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