◊(Local Yarn Code "Check-in [e538e325]")

Overview
Comment:Minor code doc edits
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: e538e325814725c180d92dd6e77d08fa71eab61b6034485ec514b52d4cda8438
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
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







-
+
+
+

-
+
+

-
+
+
+
+
+







              
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 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 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.
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]
243
244
245
246
247
248
249
250
251



252
253
250
251
252
253
254
255
256


257
258
259
260
261







-
-
+
+
+


                     [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].
@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].

}