up.sql 5.5 KB
CREATE TABLE markdowns (
	id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
	name VARCHAR(256) NOT NULL,
	content TEXT NOT NULL,
	number_of_versions INTEGER NOT NULL DEFAULT (1),
	date_created TEXT NOT NULL,
	date_updated TEXT NOT NULL
);

-- This holds compressed reverse patches to markdown.content.
-- The markdown.content field always holds the latest version.
-- This way we can always restore every version we had in the past.
-- The date_created here should be set to the value of
-- markdown.date_updated when the patch was created. This diff_id
-- is always current last max diff_id for given markdown_id plus 1.
CREATE TABLE markdown_diffs (
	markdown_id INTEGER NOT NULL,
	diff_id INTEGER NOT NULL,
	diff BLOB NOT NULL,
	date_created TEXT NOT NULL,
	PRIMARY KEY (markdown_id, diff_id)
);

INSERT INTO markdowns
	(name, content, date_created, date_updated)
VALUES
	( 'md-example'
        , "# Markdown Cheatsheat

## Überschriften
---

# # <H1>
## ## <H2>
### ### <H3>
#### #### <H4>
##### ##### <H5>
###### ###### <H6>

## Absätze und Umbrüche
---

Ein einfacher Zeilenumbruch
verändert den Textfluss nicht. Spaces             haben           auch keinen Einfluss auf den Textfluss. Es ist selten eine gute Idee große Abstände innerhalb eines Textes zu habe, sollte man diese aber wirklich brauchen kann man auf        inline html        zurückgreifen.

Leerzeilen erzeugen neue Paragraphen. Um im formatierten Text einen Zeilenumbruch zu erzeugen verwendet man zwei Spaces vor einem Zeilenumbruch im Eingabetext.  
Dies führt nicht zu einem Paragraphen.

## Hervorhebungen
---

- *kursive (schwache) Hervorhebung*
- **fette (starke) Hervorhebung**
- ***kursiv und fette (sehr starke) Hervorhebung***
- *schwache mit **eingebetteter starker** Hervorhebung*
- **starke mit *eingebetteter schwacher* Hervorhebung**
- ~~durchgestrichen~~
- <u>unterstreichen nur mit HTML</u>
- ~~*durchgestrichen kursiv*~~
- **~~fett durchgestrichen~~**
- *<u>kursiv unterstrichen</u>*
- <u>**unterstrichen fett**</u>

## Gedanken- und Binde--strich
---

Ein Einfaches Minus bildet im Text den Gedankenstrich *hyphen* (-). Zwei oder mehr Minus werden zu verschieden langen Bindestrichen *dash* (--, ---). In regulärem
Text kommen zwei Minuszeichen hintereinander in der Regel nicht vor. In
Programmcode, der in ASCII geschrieben ist allerdings schon. Will man also zwei
Minuszeichen separat darstellen kann man diese in inline code packen (`--, ---`).

## Listen
---

- erster Listeneintrag
    - erster Unterlisteneintrag
    - zweiter Unterlisteneintrag
- zweiter Listeneintrag
    1. erster nummerierter Listeneintrag
        1. erster nummerierter Unterlisteneintrag
        2. zweiter nummerierter Unterlisteneintrag
        3. dritter nummerierter Unterlisteneintrag
    2. zweiter nummerierter Listeneintrag
- dritter Listeneintrag
    - [x] erster Auswahllisteneintrag
    - [ ] zweiter Auswahllisteneintrag
    - [x] dritter Auswahllisteneintrag
- vierter Listeneintrag
    1. [ ] erster nummerierter Auswahllisteneintrag
    2. [x] zweiter nummerierter Auswahllisteneintrag

## Code Blöcke
---

    Dies ist ein codeblock durch Einrückung.
      In diesem werden    keine Formatierungen
        vorgenommen.

Mit backticks lassen sich Codeblöcke mit Sprachinformation
erstellen. Theoretisch könnte für solche Böcke dann Syntax-Highliting eingebaut werden.

```shell
#!/bin/env sh

FOO=\"foo\"

function func() {
  local BAR=bar
}
```

Auch in den Fließtext lassen sich `inline code` Elemente einfügen um z.B. einzelne Kommandos hervorzuheben.

## Zitate und horizontale Linie
---

> Dies ist ein Zitat.
>
>> Zitate können verschachtelt sein.
>
> Wir können also zitieren was jemand zitiert hat.
> Solange die Zeilen ohne Unterbrechung mit einem >
> beginnen bleibt es ein Zitat


> Sobald eine Zeile ohne führendes > auftaucht endet ein
> Zitat.

## Links
---

Ein Link kann inline geschrieben werden, so wie diese zu
[Heise.de](https://heise.de/ 'Heise.de') oder als Referenz am Ende des Textes
wie diese nach [Telepolis][lnk1].

## Bilder
---

Wie Links lassen sich auch Bilder wie mein
![Gravatar](https://www.gravatar.com/avatar/fd016c954ec4ed3a4315eeed6c8b97b8)
in den Text ein.

Im Fließtext sieht das allerdings ein bisschen dumm aus es sei denn man hat
entsprechend angepasste styles. Besser scheint mir daher Bilder nur zwischen
Paragraphen zu platzieren.

![Gravatar](https://www.gravatar.com/avatar/fd016c954ec4ed3a4315eeed6c8b97b8)

Etwas so wie hier.

## Tabellen
---

Die folgenden Beispiele kommen von [markdown.land][lnk2]:

| Artikel       | Preis     | Bestand    |
|---------------|-----------|------------|
| Saftige Äpfel | 1.99      | *8*        |
| Bananen       | **1.89**  | 5234       |

Man braucht sie nicht schön zu formatieren.

Artikel | Preis | Bestand
---|---|---
Saftige Äpfel | 1.99 | 739
Bananen | 1.89 | 6

und die Spaltenausrichtung kann man auch einstellen:

| Artikel       | Preis   | Bestand    |
|---------------|:-------:|-----------:|
| Saftige Äpfel |  1.99   |        739 |
| Bananen       |  1.8900 |          6 |

## Fußnoten
---

Man kann auch verlinkte Fußnoten[^1] in den Text
einbinden. Die Fußnote selber kann dann an beliebige stelle im Text stehen.

---
[^1]: Zum Beispiel so.

[^2]: Diese Fußnote hat keine Verlinkung im Text.

## HTML einbetten

<ul>
<li>
<pre>Man kann auch direkt HTML tags einbetten,
wie hier.</pre>
</li>
</ul>

[lnk1]: https://heise.de/tp/ 'Telepolis'
[lnk2]: https://arkdown.land/markdown-table 'markdown.land'"
	, '2022-01-29 21:33:34.000'
	, '2022-01-29 21:33:34.000' );