Mercurial Hosting > chat
comparison src/lib/User.luan @ 4:2da10ece826f
add Chat
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Sun, 27 Oct 2024 20:39:18 -0600 |
| parents | 2c63b10781e1 |
| children | b8b12fd8be22 |
comparison
equal
deleted
inserted
replaced
| 3:2c63b10781e1 | 4:2da10ece826f |
|---|---|
| 14 local Lucene = require "luan:lucene/Lucene.luan" | 14 local Lucene = require "luan:lucene/Lucene.luan" |
| 15 local lucene_quote = Lucene.quote or error() | 15 local lucene_quote = Lucene.quote or error() |
| 16 local Http = require "luan:http/Http.luan" | 16 local Http = require "luan:http/Http.luan" |
| 17 local Db = require "site:/lib/Db.luan" | 17 local Db = require "site:/lib/Db.luan" |
| 18 local run_in_transaction = Db.run_in_transaction or error() | 18 local run_in_transaction = Db.run_in_transaction or error() |
| 19 local Chat = require "site:/lib/Chat.luan" | |
| 19 local Logging = require "luan:logging/Logging.luan" | 20 local Logging = require "luan:logging/Logging.luan" |
| 20 local logger = Logging.logger "User" | 21 local logger = Logging.logger "User" |
| 21 | 22 |
| 22 | 23 |
| 23 local User = {} | 24 local User = {} |
| 46 local doc = to_doc(user) | 47 local doc = to_doc(user) |
| 47 Db.save(doc) | 48 Db.save(doc) |
| 48 user.id = doc.id | 49 user.id = doc.id |
| 49 end | 50 end |
| 50 | 51 |
| 51 function user.reload() | 52 function user.delete() |
| 52 return User.get_by_id(user.id) or error(user.id) | 53 run_in_transaction( function() |
| 54 local id = user.id | |
| 55 local chats = Chat.search("chat_user_ids:"..id) | |
| 56 for _, chat in ipairs(chats) do | |
| 57 chat.delete() | |
| 58 end | |
| 59 Db.delete("id:"..id) | |
| 60 end ) | |
| 53 end | 61 end |
| 54 | 62 |
| 55 function user.login() | 63 function user.login() |
| 56 local id = to_string(user.id) | 64 local id = to_string(user.id) |
| 57 Http.response.set_persistent_cookie("user",id) | 65 Http.response.set_persistent_cookie("user",id) |
| 58 Http.response.set_persistent_cookie("password",user.password) | 66 Http.response.set_persistent_cookie("password",user.password) |
| 59 Http.request.cookies.user = id | 67 Http.request.cookies.user = id |
| 60 Http.request.cookies.password = user.password or error() | 68 Http.request.cookies.password = user.password or error() |
| 69 end | |
| 70 | |
| 71 function user.get_chats() | |
| 72 return Chat.search("chat_user_ids:"..user.id) | |
| 73 end | |
| 74 | |
| 75 function user.get_or_create_chat_with(emails) | |
| 61 end | 76 end |
| 62 | 77 |
| 63 return user | 78 return user |
| 64 end | 79 end |
| 65 | 80 |
| 85 t[#t+1] = password_chars[random(n)] | 100 t[#t+1] = password_chars[random(n)] |
| 86 end | 101 end |
| 87 return concat(t) | 102 return concat(t) |
| 88 end | 103 end |
| 89 | 104 |
| 105 local function get_by_email(email) | |
| 106 local doc = Db.get_document("user_email:"..lucene_quote(email)) | |
| 107 return doc and from_doc(doc) | |
| 108 end | |
| 109 User.get_by_email = get_by_email | |
| 110 | |
| 90 function User.get_or_create_by_email(email) | 111 function User.get_or_create_by_email(email) |
| 91 return run_in_transaction( function() | 112 return run_in_transaction( function() |
| 92 local doc = Db.get_document("user_email:"..lucene_quote(email)) | 113 local user = get_by_email(email) |
| 93 if doc ~= nil then | 114 if user == nil then |
| 94 return from_doc(doc) | 115 user = User.new{ |
| 95 else | |
| 96 local user = User.new{ | |
| 97 email = email | 116 email = email |
| 98 password = new_password() | 117 password = new_password() |
| 99 } | 118 } |
| 100 user.save() | 119 user.save() |
| 101 return user | |
| 102 end | 120 end |
| 121 return user | |
| 103 end ) | 122 end ) |
| 104 end | 123 end |
| 105 | 124 |
| 106 function User.search(query,sort,rows) | 125 function User.search(query,sort,rows) |
| 107 rows = rows or 1000000 | 126 rows = rows or 1000000 |
