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 |