Mercurial Hosting > lang
view src/lib/Course.luan @ 23:0c17c233c45a
start courses
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 30 Jul 2025 23:29:33 -0600 |
parents | |
children | 87fe70201aa8 |
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 Db = require "site:/lib/Db.luan" local languages = require "site:/lib/languages.luan" 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 name = doc.name ai_system_prompt = doc.ai_system_prompt } 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() name = course.name or error() ai_system_prompt = course.ai_system_prompt or error() } end function Course.new(course) function course.save() local doc = to_doc(chat) Db.save(doc) chat.id = doc.id end function course.language_name() return languages[course.language].name end return course end local function 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_for_language(language) return search("course_language:"..language) 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