Mercurial Hosting > freedit
comparison src/lib/User.luan @ 43:298c71e0c854
caching
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Wed, 09 Nov 2022 23:05:01 -0700 |
| parents | de0cbf515ef5 |
| children | 260abd8f8565 |
comparison
equal
deleted
inserted
replaced
| 42:0c1b820fff34 | 43:298c71e0c854 |
|---|---|
| 1 local Luan = require "luan:Luan.luan" | 1 local Luan = require "luan:Luan.luan" |
| 2 local error = Luan.error | 2 local error = Luan.error |
| 3 local set_metatable = Luan.set_metatable or error() | 3 local set_metatable = Luan.set_metatable or error() |
| 4 local range = Luan.range or error() | 4 local range = Luan.range or error() |
| 5 local set_local_only = Luan.set_local_only or error() | |
| 6 local get_local_only = Luan.get_local_only or error() | |
| 5 local String = require "luan:String.luan" | 7 local String = require "luan:String.luan" |
| 6 local sub_string = String.sub or error() | 8 local sub_string = String.sub or error() |
| 7 local Table = require "luan:Table.luan" | 9 local Table = require "luan:Table.luan" |
| 8 local concat = Table.concat or error() | 10 local concat = Table.concat or error() |
| 9 local Math = require "luan:Math.luan" | 11 local Math = require "luan:Math.luan" |
| 18 local Db = require "site:/lib/Db.luan" | 20 local Db = require "site:/lib/Db.luan" |
| 19 | 21 |
| 20 | 22 |
| 21 local User = {} | 23 local User = {} |
| 22 | 24 |
| 25 local users_by_name = {} | |
| 26 | |
| 23 local function from_doc(doc) | 27 local function from_doc(doc) |
| 24 doc.type == "user" or error "wrong type" | 28 doc.type == "user" or error "wrong type" |
| 25 return User.new { | 29 local user = User.new { |
| 26 id = doc.id | 30 id = doc.id |
| 27 email = doc.user_email | 31 email = doc.user_email |
| 28 password = doc.password | 32 password = doc.password |
| 29 name = doc.user_name | 33 name = doc.user_name |
| 30 created = doc.created | 34 created = doc.created |
| 31 } | 35 } |
| 36 set_local_only(users_by_name,user.name,user) | |
| 37 return user | |
| 32 end | 38 end |
| 33 | 39 |
| 34 local function to_doc(user) | 40 local function to_doc(user) |
| 35 local email = user.email | 41 local email = user.email |
| 36 return { | 42 return { |
| 68 local doc = Db.get_document("user_email:"..lucene_quote(email)) | 74 local doc = Db.get_document("user_email:"..lucene_quote(email)) |
| 69 return doc and from_doc(doc) | 75 return doc and from_doc(doc) |
| 70 end | 76 end |
| 71 | 77 |
| 72 local function get_by_name(name) | 78 local function get_by_name(name) |
| 79 local user = get_local_only(users_by_name,name) | |
| 80 if user ~= nil then return user end | |
| 73 local doc = Db.get_document("user_name:"..lucene_quote(name)) | 81 local doc = Db.get_document("user_name:"..lucene_quote(name)) |
| 74 return doc and from_doc(doc) | 82 return doc and from_doc(doc) |
| 75 end | 83 end |
| 76 User.get_by_name = get_by_name | 84 User.get_by_name = get_by_name |
| 77 | 85 |
