Compare commits

...

42 Commits

Author SHA1 Message Date
7fe1b6f8be Merge branch 'master' into gractwo
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 1m13s
2026-05-06 00:58:28 +02:00
ca726c8e8b quote deletion confirmation 2026-05-06 00:58:07 +02:00
a08ba568cb Merge branch 'master' into gractwo
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 1m13s
2026-05-06 00:43:48 +02:00
0be4f11f66 Merge branch 'master' into gractwo
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 1m13s
2026-05-05 11:01:29 +02:00
cdd296ea84 Merge branch 'master' into gractwo
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 1m11s
2026-05-01 16:33:03 +02:00
4aa96dca01 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 1m7s
2026-04-30 20:02:34 +00:00
05d4aca741 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 1m38s
2026-04-30 17:05:43 +00:00
202b81e517 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 3m3s
2026-04-28 22:55:44 +00:00
ccc1be0d07 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 1m4s
2026-04-28 15:48:20 +00:00
55c7ad6d6a merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 1m5s
2026-04-27 22:54:08 +00:00
021489c740 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 3m21s
2026-04-27 21:52:00 +00:00
665915f61b merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 43s
2026-04-09 20:20:13 +00:00
35932da2f7 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 44s
2026-04-09 18:39:33 +00:00
fe03b17cb9 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 44s
2026-04-09 17:34:41 +00:00
13759498ff merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 45s
2026-04-09 17:29:37 +00:00
9b24e68691 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 42s
2026-04-09 16:38:35 +00:00
060fe7a3a3 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 40s
2026-04-09 16:03:59 +00:00
a0cd0ad633 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 40s
2026-04-09 15:55:30 +00:00
a3f5ccfcb7 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 43s
2026-04-09 14:08:36 +00:00
e35da127aa merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 40s
2026-04-09 13:23:39 +00:00
23595e8008 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 14s
2026-04-09 12:38:36 +00:00
1f9a854122 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 44s
2026-04-09 12:32:00 +00:00
9163e38cec Update .gitea/workflows/build-and-publish.yaml
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 10s
2026-04-09 11:43:25 +00:00
4ae0e0ddf1 Update .gitea/workflows/build-and-publish.yaml
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 10s
2026-04-09 11:41:07 +00:00
7c1cc1dcf9 Update .gitea/workflows/build-and-publish.yaml
Some checks failed
mnemo-build-and-publish / gractwo-mnemo-build (push) Failing after 14s
2026-04-09 11:40:06 +00:00
dff6e3dd91 Update .gitea/workflows/build-and-publish.yaml 2026-04-09 11:39:52 +00:00
00d34f23b0 Update .gitea/workflows/build-and-publish.yaml 2026-04-09 11:39:35 +00:00
ac37058d9f Update .gitea/workflows/build-and-publish.yaml 2026-04-09 11:39:02 +00:00
a5180e4ee9 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 44s
2026-04-09 11:17:01 +00:00
b9632e55d5 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 44s
2026-04-08 23:15:48 +00:00
b1e713fd18 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 42s
2026-04-08 18:36:37 +00:00
d6e68ac8f7 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 40s
2026-04-07 23:16:50 +00:00
1adb4d9e33 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 32s
2026-04-06 19:29:05 +00:00
dc326dfd94 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 34s
2026-04-05 22:26:49 +00:00
7514e98f1b merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 8s
2026-04-04 21:52:29 +00:00
f588f3cf27 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 35s
2026-04-04 08:26:51 +00:00
0fb8dafd09 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 31s
2026-04-03 17:06:32 +00:00
a811727dd3 merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 31s
2026-04-03 14:18:14 +00:00
dc7d16babe merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 9s
2026-04-03 13:17:45 +00:00
bd9b24cdbb merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 3m1s
2026-04-03 13:00:28 +00:00
bc44efad1a merge upstream
Some checks failed
mnemo-build-and-publish / gractwo-mnemo-build (push) Failing after 10s
2026-04-03 12:56:33 +00:00
1776ada5ee Create build-and-publish.yaml 2026-04-03 14:40:30 +02:00
3 changed files with 88 additions and 2 deletions

View File

@@ -0,0 +1,33 @@
name: mnemo-build-and-publish
run-name: Mnemosyne Build&Publish by ${{gitea.actor}} on ${{gitea.ref_name}}
on:
push:
branches:
- master
jobs:
gractwo-mnemo-build:
runs-on: ubuntu-latest
steps:
- name: checkout repo
uses: actions/checkout@v4
- name: set short sha
run: echo "short_sha=$(echo ${{gitea.sha}} | cut -c1-12)" >> $GITEA_ENV
- name: build image
run: |
docker buildx build --platform linux/amd64 \
-t git.gractwo.pl/gractwo/mnemosyne:${{env.short_sha}} \
.
- name: log into package registry
uses: docker/login-action@v3
with:
registry: git.gractwo.pl
username: ${{gitea.actor}}
password: ${{secrets.TOKEN2}}
- name: publish
run: docker push git.gractwo.pl/gractwo/mnemosyne:${{env.short_sha}}
- uses: actions-hub/kubectl@master
env:
KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
with:
args: patch statefulset -n cytaty mnemosyne -p '{"spec":{"template":{"spec":{"containers":[{"name":"mnemosyne","image":"git.gractwo.pl/gractwo/mnemosyne:${{env.short_sha}}"}]}}}}'

View File

@@ -51,7 +51,10 @@ pub fn pages() -> Router<MnemoState> {
// //
.route("/quotes", get(quotes::page)) .route("/quotes", get(quotes::page))
.route("/quotes/{id}", get(quotes::id::page)) .route("/quotes/{id}", get(quotes::id::page))
.route("/quotes/{id}/delete", post(quotes::id::delete)) .route(
"/quotes/{id}/delete",
get(quotes::id::delete_confirm).post(quotes::id::delete),
)
.route("/quotes/add", get(quotes::add::page)) .route("/quotes/add", get(quotes::add::page))
.route("/quotes/add-form", post(quotes::add::form)) .route("/quotes/add-form", post(quotes::add::form))
// //

View File

@@ -53,12 +53,62 @@ pub async fn page(
span class="scale-[.75]" {(PreEscaped(icons::PEN))} span class="scale-[.75]" {(PreEscaped(icons::PEN))}
"Edit" "Edit"
} }
form method="post" action=(format!("/quotes/{id}/delete")) { a href=(format!("/quotes/{id}/delete")) class="px-2 py-1 cursor-pointer border rounded flex flex-row gap-1 bg-pink-400/10 border-pink-400/25 hover:bg-pink-400/20 hover:border-pink-400/45" {
button type="submit" class="px-2 py-1 border rounded flex flex-row gap-1 bg-pink-400/10 border-pink-400/25 hover:bg-pink-400/20 hover:border-pink-400/45" {
span class="scale-[.75]" {(PreEscaped(icons::TRASH))} span class="scale-[.75]" {(PreEscaped(icons::TRASH))}
"Delete" "Delete"
} }
} }
} @else {
"Failed to fetch quote. Are you sure it exists?"
}
}
),
)
.into_response())
}
pub async fn delete_confirm(
State(state): State<MnemoState>,
Path(id): Path<Uuid>,
req: Request,
) -> Result<Response, CompositeError> {
let mut conn = state.pool.acquire().await?;
let u = match User::authenticate(&mut *conn, req.headers()).await? {
Some(u) => u,
None => return Ok(Redirect::to(&format!("/login?r={}", req.uri().path())).into_response()),
};
let q = Quote::get_by_id(&mut conn, id).await;
Ok(base(
"Delete Quote | Mnemosyne",
html!(
(nav(&mut conn, Some(&u), req.uri().path()).await)
div class="max-w-4xl mx-auto px-2" {
div class="my-4 flex justify-between" {
p class="flex items-center gap-2 text-neutral-500" {
(PreEscaped(icons::TRASH))
span class="font-lora" {"Deleting quote of ID " (id)}
}
}
@if let Ok(q) = q {
div class="border border-pink-400/25 bg-pink-400/10 rounded-md p-3 mb-4" {
p class="flex flex-wrap items-center gap-2 text-pink-200" {
span class="font-semibold" {"Are you sure you want to delete this quote?"}
span class="text-pink-300/80" {"This cannot be undone."}
}
}
(quote(&q))
div class="flex flex-row w-full flex-wrap justify-start gap-2 mt-2" {
form method="post" action=(format!("/quotes/{id}/delete")) {
button type="submit" class="px-2 py-1 cursor-pointer border rounded flex flex-row gap-1 bg-pink-400/10 border-pink-400/25 hover:bg-pink-400/20 hover:border-pink-400/45" {
span class="scale-[.75]" {(PreEscaped(icons::TRASH))}
"Delete"
}
}
a href=(format!("/quotes/{id}")) class="px-2 py-1 border rounded flex flex-row gap-1 bg-neutral-200/5 border-neutral-200/25 hover:bg-neutral-200/15 hover:border-neutral-200/45" {
"Cancel"
}
} }
} @else { } @else {
"Failed to fetch quote. Are you sure it exists?" "Failed to fetch quote. Are you sure it exists?"