Overview
Comment: | Minor code doc edits |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
e538e325814725c180d92dd6e77d08fa |
User & Date: | joel on 2020-02-22 00:04:28 |
Other Links: | manifest | tags |
Context
2020-02-24
| ||
07:35 | Variadic make-tag-predicate check-in: 3ed11073 user: joel tags: trunk | |
2020-02-22
| ||
00:04 | Minor code doc edits check-in: e538e325 user: joel tags: trunk | |
2020-02-21
| ||
22:43 | Build up listing schema, use for RSS feed ([2f082139]) check-in: d3755213 user: joel tags: trunk | |
Changes
Modified code-docs/cache.scrbl from [1876eb41] to [bc87f6f5].
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
...
243
244
245
246
247
248
249
250
251
252
253
|
Delete a particular article, or all notes for a particular article, respectively. } @section{Schema} The cache database has four tables: @tt{articles}, @tt{notes}, @tt{index_entries} and @tt{series}. Each of these has a corresponding schema, shown below. In addition, there is a “virtual” schema, @tt{listing}, for use with queries which may or may not combine articles and notes intermingled. The work of picking apart an article’s exported @tt{doc} and @tt{metas} into rows in these tables is done by @racket[parse-and-cache-article!]. The below are shown as @code{struct} forms but are actually defined with deta’s @racket[define-schema]. Each schema has an associated struct with the same name and a smart constructor called @tt{make-@emph{id}}. The struct’s “dumb” constructor is hidden so that invalid entities cannot be created. For every defined field there is an associated functional setter and updater named @tt{set-@emph{id}-field} and @tt{update-@emph{id}-field}, respectively. @defstruct*[cache:article ([id id/f] [page symbol/f] [title-plain string/f] [title-html-flow string/f] [title-specified boolean/f] [published string/f] ................................................................................ [author string/f] [published string/f] [updated string/f] [html string/f]) #:constructor-name make-listing]{ This is a “virtual” schema targeted by @racket[articles] and @racket[articles+notes] using deta’s @racket[project-onto]. It supplies the minimum set of fields needed to build the RSS feed; most times (e.g., on @tech{series} pages) only the @tt{html} field is used, via @racket[fenced-listing]. } |
>
|
>
|
>
>
|
>
>
>
|
|
>
|
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
...
250
251
252
253
254
255
256
257
258
259
260
261
|
Delete a particular article, or all notes for a particular article, respectively. } @section{Schema} The cache database has four tables: @tt{articles}, @tt{notes}, @tt{index_entries} and @tt{series}. Each of these has a corresponding schema, shown below. In addition, there is a “virtual” schema, @tt{listing}, for use with queries which may or may not combine articles and notes intermingled. The work of picking apart an article’s exported @tt{doc} and @tt{metas} into rows in these tables is done by @racket[parse-and-cache-article!]. The below are shown as @code{struct} forms but are actually defined with deta’s @racket[define-schema]. Each schema has an associated struct with the same name and a smart constructor called @tt{make-@emph{id}}. The struct’s “dumb” constructor is hidden so that invalid entities cannot be created. For every defined field there is an associated functional setter and updater named @tt{set-@emph{id}-field} and @tt{update-@emph{id}-field}, respectively. @defstruct*[cache:article ([id id/f] [page symbol/f] [title-plain string/f] [title-html-flow string/f] [title-specified boolean/f] [published string/f] ................................................................................ [author string/f] [published string/f] [updated string/f] [html string/f]) #:constructor-name make-listing]{ This is a “virtual” schema targeted by @racket[articles] and @racket[articles+notes] using deta’s @racket[project-onto]. It supplies the minimum set of fields needed to build the RSS feed, and which are common to both articles and notes; most times (e.g., on @tech{series} pages) only the @tt{html} field is used, via @racket[fenced-listing] or @racket[listing-htmls]. } |