-
-
Notifications
You must be signed in to change notification settings - Fork 8
/
documentation.lisp
135 lines (95 loc) · 3.37 KB
/
documentation.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
(in-package #:org.shirakumo.maiden.agents.chatlog)
;; chatlog.lisp
(docs:define-docs
(type chatlog
"This agent handles the recording of messages and activity in a channel to a database, potentially for public viewing on the web.")
(function back-queue
"Accessor to the chatlog's back-queue of messages that it should send out.
See CHATLOG
See MAYBE-RECORD-MESSAGE")
(command activate
"Activate chat logging for the current channel.")
(command activate-on
"Activate logging on a specific client's channel.")
(command deactivate
"Deactivate chat logging on the current channel.")
(command deactivate-on
"Deactivate chat logging on a specific client's channel.")
(command initialize
"Set up the chatlog's postgres connection details."))
;; database.lisp
(docs:define-docs
(function connection
"Accessor to the connection information.
Returns a list of six values as expected by the
postmodern interface. When set, it expects a
plist where the values to set are given by their
respective keyword-value pairs.")
(function with-db
"Call the body with an active database connection.
If a connection is already active, nothing is
done aside from evaluating the body.
See POSTMODERN:*DATABASE*
See POSTMODERN:WITH-CONNECTION
See CONNECTION")
(function prepared-statement
"Execute a prepared statement.
See CL-POSTGRES:PREPARE-QUERY
See CL-POSTGRES:EXEC-PREPARED")
(function initialize-database
"Set up the necessary tables on the database.
The tables created will be called \"channels\"
and \"chatlog\", along with an index called
\"chatlog_channel-id_index\". The tables are
not created if they already exist.
See WITH-DB")
(function channel-designator
"Attempt to coerce the given object into a proper designator for a channel.
Should return a cons of server name and channel name.")
(function user-designator
"Attempt to coerce the given object into a proper user name.
Should return a string of the user name.")
(function channel-exists-p
"Returns true if the given channel is being logged.
See CHANNEL-DESIGNATOR
See WITH-DB")
(function add-channel
"Adds the channel for logging.
If the channel is already being logged, an
error is signalled.
See CHANNEL-DESIGNATOR
See WITH-DB")
(function del-channel
"Removes the channel from logging.
The actual data that was logged on the channel
is not removed, however.
If the channel is not being logged, an error
is signalled.
See CHANNEL-DESIGNATOR
See WITH-DB")
(function type->char
"Translate the type of event into a single character to use.
Possible types are:
- :MESSAGE => m
- :ACTION :SELF => a
- :NICK :NAME => n
- :QUIT :DISCONNECT => q
- :LEAVE :PART => p
- :ENTER :JOIN => j
- :KICK => k
- :MODE => o
- :TOPIC => t")
(function record-message
"Record a message of a given type in the database.
TYPE must be an acceptable type as by TYPE->CHAR
See TYPE->CHAR
See CHANNEL-DESIGNATOR
See USER-DESIGNATOR")
(function process-back-queue
"Process the queue on the consumer and record all messages, if possible.
See MAYBE-RECORD-MESSAGE")
(function maybe-record-message
"Records the message, if the connection to the database can be established.
Push the message to record onto the back-queue
of the client, and then try to process the
client's back-queue if possible."))