Added registration token lookup
This commit is contained in:
parent
122b420541
commit
91824dc82b
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
! tailwindcss v3.4.10 | MIT License | https://tailwindcss.com
|
! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -754,6 +754,33 @@ html {
|
|||||||
--tw-contain-style: ;
|
--tw-contain-style: ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.badge {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;
|
||||||
|
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
|
||||||
|
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
|
||||||
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
|
||||||
|
transition-duration: 200ms;
|
||||||
|
height: 1.25rem;
|
||||||
|
font-size: 0.875rem;
|
||||||
|
line-height: 1.25rem;
|
||||||
|
width: -moz-fit-content;
|
||||||
|
width: fit-content;
|
||||||
|
padding-left: 0.563rem;
|
||||||
|
padding-right: 0.563rem;
|
||||||
|
border-radius: var(--rounded-badge, 1.9rem);
|
||||||
|
border-width: 1px;
|
||||||
|
--tw-border-opacity: 1;
|
||||||
|
border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));
|
||||||
|
--tw-bg-opacity: 1;
|
||||||
|
background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));
|
||||||
|
--tw-text-opacity: 1;
|
||||||
|
color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));
|
||||||
|
}
|
||||||
|
|
||||||
@media (hover:hover) {
|
@media (hover:hover) {
|
||||||
.label a:hover {
|
.label a:hover {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
@ -1227,6 +1254,10 @@ html {
|
|||||||
color: var(--fallback-bc,oklch(var(--bc)/0.3));
|
color: var(--fallback-bc,oklch(var(--bc)/0.3));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:where(.menu li) .badge {
|
||||||
|
justify-self: end;
|
||||||
|
}
|
||||||
|
|
||||||
.navbar {
|
.navbar {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -1364,6 +1395,20 @@ input.tab:checked + .tab-content,
|
|||||||
background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));
|
background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.badge-neutral {
|
||||||
|
--tw-border-opacity: 1;
|
||||||
|
border-color: var(--fallback-n,oklch(var(--n)/var(--tw-border-opacity)));
|
||||||
|
--tw-bg-opacity: 1;
|
||||||
|
background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));
|
||||||
|
--tw-text-opacity: 1;
|
||||||
|
color: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));
|
||||||
|
}
|
||||||
|
|
||||||
|
.badge-outline.badge-neutral {
|
||||||
|
--tw-text-opacity: 1;
|
||||||
|
color: var(--fallback-n,oklch(var(--n)/var(--tw-text-opacity)));
|
||||||
|
}
|
||||||
|
|
||||||
.btm-nav > *.disabled,
|
.btm-nav > *.disabled,
|
||||||
.btm-nav > *[disabled] {
|
.btm-nav > *[disabled] {
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
@ -1400,6 +1445,10 @@ input.tab:checked + .tab-content,
|
|||||||
.btn-primary {
|
.btn-primary {
|
||||||
--btn-color: var(--fallback-p);
|
--btn-color: var(--fallback-p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn-neutral {
|
||||||
|
--btn-color: var(--fallback-n);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@supports (color: color-mix(in oklab, black, black)) {
|
@supports (color: color-mix(in oklab, black, black)) {
|
||||||
@ -1425,6 +1474,16 @@ input.tab:checked + .tab-content,
|
|||||||
.btn-primary {
|
.btn-primary {
|
||||||
--btn-color: var(--p);
|
--btn-color: var(--p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn-neutral {
|
||||||
|
--btn-color: var(--n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-neutral {
|
||||||
|
--tw-text-opacity: 1;
|
||||||
|
color: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));
|
||||||
|
outline-color: var(--fallback-n,oklch(var(--n)/1));
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn.glass {
|
.btn.glass {
|
||||||
@ -1691,6 +1750,10 @@ input.tab:checked + .tab-content,
|
|||||||
margin-inline-start: calc(var(--border-btn) * -1);
|
margin-inline-start: calc(var(--border-btn) * -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.join-item:focus {
|
||||||
|
isolation: isolate;
|
||||||
|
}
|
||||||
|
|
||||||
.loading {
|
.loading {
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
@ -2125,6 +2188,14 @@ input.tab:checked + .tab-content,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.badge-lg {
|
||||||
|
height: 1.5rem;
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: 1.5rem;
|
||||||
|
padding-left: 0.688rem;
|
||||||
|
padding-right: 0.688rem;
|
||||||
|
}
|
||||||
|
|
||||||
.btn-wide {
|
.btn-wide {
|
||||||
width: 16rem;
|
width: 16rem;
|
||||||
}
|
}
|
||||||
@ -2345,6 +2416,10 @@ input.tab:checked + .tab-content,
|
|||||||
margin-top: 2.5rem;
|
margin-top: 2.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mt-2 {
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
.mt-20 {
|
.mt-20 {
|
||||||
margin-top: 5rem;
|
margin-top: 5rem;
|
||||||
}
|
}
|
||||||
@ -2369,11 +2444,20 @@ input.tab:checked + .tab-content,
|
|||||||
display: contents;
|
display: contents;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.size-6 {
|
||||||
|
width: 1.5rem;
|
||||||
|
height: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
.size-8 {
|
.size-8 {
|
||||||
width: 2rem;
|
width: 2rem;
|
||||||
height: 2rem;
|
height: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.h-8 {
|
||||||
|
height: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
.h-\[30rem\] {
|
.h-\[30rem\] {
|
||||||
height: 30rem;
|
height: 30rem;
|
||||||
}
|
}
|
||||||
@ -2463,6 +2547,11 @@ input.tab:checked + .tab-content,
|
|||||||
gap: 1.25rem;
|
gap: 1.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.gap-x-2 {
|
||||||
|
-moz-column-gap: 0.5rem;
|
||||||
|
column-gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
.overflow-auto {
|
.overflow-auto {
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
@ -2475,6 +2564,10 @@ input.tab:checked + .tab-content,
|
|||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.whitespace-nowrap {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
.bg-base-200 {
|
.bg-base-200 {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));
|
background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));
|
||||||
@ -2513,6 +2606,10 @@ input.tab:checked + .tab-content,
|
|||||||
padding-bottom: 2.5rem;
|
padding-bottom: 2.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.pb-3 {
|
||||||
|
padding-bottom: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
.text-center {
|
.text-center {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
@ -2558,3 +2655,7 @@ input.tab:checked + .tab-content,
|
|||||||
.hover\:cursor-pointer:hover {
|
.hover\:cursor-pointer:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.hover\:line-through:hover {
|
||||||
|
text-decoration-line: line-through;
|
||||||
|
}
|
||||||
|
38
devenv.lock
38
devenv.lock
@ -3,11 +3,11 @@
|
|||||||
"devenv": {
|
"devenv": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"dir": "src/modules",
|
"dir": "src/modules",
|
||||||
"lastModified": 1725637114,
|
"lastModified": 1726826452,
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "devenv",
|
"repo": "devenv",
|
||||||
"rev": "c31e347a96dbb7718a0279afa993752a7dfc6a39",
|
"rev": "2bdf6461e88c7e93b94d72d8b11d5a61f167cbf5",
|
||||||
"treeHash": "e0dfcbbfb0974603336900406b364bd4d1308fa4",
|
"treeHash": "e10f5d7f21ef64fb0a9c269c400af0cd8f43fb35",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -25,11 +25,11 @@
|
|||||||
"rust-analyzer-src": "rust-analyzer-src"
|
"rust-analyzer-src": "rust-analyzer-src"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725690497,
|
"lastModified": 1726986637,
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "fenix",
|
"repo": "fenix",
|
||||||
"rev": "4b8d964df93d1f918ee6c4f003b3548c432cc866",
|
"rev": "f5a9b01cd81b46228b3737669e8275b1f2da7d35",
|
||||||
"treeHash": "0b0da47066a273999c379058d109204c9fb5296a",
|
"treeHash": "97be3a5a79be99410ddfc81f61377daba4df0ec5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -77,27 +77,27 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725534445,
|
"lastModified": 1726838390,
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9bb1e7571aadf31ddb4af77fc64b2d59580f9a39",
|
"rev": "944b2aea7f0a2d7c79f72468106bc5510cbf5101",
|
||||||
"treeHash": "42b4c844752e33185e2fac3d506d150637caae7d",
|
"treeHash": "5ff7724fe1272ea9b66c97c25e00bb1dc9782aaf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixpkgs-unstable",
|
"ref": "nixos-24.05",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725407940,
|
"lastModified": 1726838390,
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "6f6c45b5134a8ee2e465164811e451dcb5ad86e3",
|
"rev": "944b2aea7f0a2d7c79f72468106bc5510cbf5101",
|
||||||
"treeHash": "f65d5344b23cfbe3695140b602bc463349b26638",
|
"treeHash": "5ff7724fe1272ea9b66c97c25e00bb1dc9782aaf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -117,11 +117,11 @@
|
|||||||
"nixpkgs-stable": "nixpkgs-stable"
|
"nixpkgs-stable": "nixpkgs-stable"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725513492,
|
"lastModified": 1726745158,
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "pre-commit-hooks.nix",
|
"repo": "pre-commit-hooks.nix",
|
||||||
"rev": "7570de7b9b504cfe92025dd1be797bf546f66528",
|
"rev": "4e743a6920eab45e8ba0fbe49dc459f1423a4b74",
|
||||||
"treeHash": "4b46d77870afecd8f642541cb4f4927326343b59",
|
"treeHash": "56fbe2a9610b3ad9163a74011131e7624f6b3b81",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -141,11 +141,11 @@
|
|||||||
"rust-analyzer-src": {
|
"rust-analyzer-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725630423,
|
"lastModified": 1726443025,
|
||||||
"owner": "rust-lang",
|
"owner": "rust-lang",
|
||||||
"repo": "rust-analyzer",
|
"repo": "rust-analyzer",
|
||||||
"rev": "08c7bbc2dbe4dcc8968484f1a0e1e6fe7a1d4f6d",
|
"rev": "94b526fc86eaa0e90fb4d54a5ba6313aa1e9b269",
|
||||||
"treeHash": "0a74bbe7a31e26686dab5792be52a87dbd0d36b3",
|
"treeHash": "3a9ddbe34b25b2921864f029988d2d48049b2d4a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# https://devenv.sh/basics/
|
# https://devenv.sh/basics/
|
||||||
env.GREET = "devenv";
|
env.GREET = "devenv";
|
||||||
env.LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
|
env.LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
|
||||||
env.BINDGEN_EXTRA_CLANG_ARGS = "-I ${pkgs.libclang.lib}/lib/clang/18/include";
|
env.BINDGEN_EXTRA_CLANG_ARGS = "-I ${pkgs.libclang.lib}/lib/clang/17/include";
|
||||||
|
|
||||||
# https://devenv.sh/packages/
|
# https://devenv.sh/packages/
|
||||||
packages = [ pkgs.openssl pkgs.git pkgs.tailwindcss pkgs.watchexec pkgs.libclang pkgs.clang ];
|
packages = [ pkgs.openssl pkgs.git pkgs.tailwindcss pkgs.watchexec pkgs.libclang pkgs.clang ];
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
inputs:
|
inputs:
|
||||||
nixpkgs:
|
nixpkgs:
|
||||||
url: github:NixOS/nixpkgs/nixpkgs-unstable
|
url: github:NixOS/nixpkgs/nixos-24.05
|
||||||
fenix:
|
fenix:
|
||||||
url: github:nix-community/fenix
|
url: github:nix-community/fenix
|
||||||
inputs:
|
inputs:
|
||||||
|
@ -35,6 +35,6 @@ pub fn Global() -> Element {
|
|||||||
|
|
||||||
#[server]
|
#[server]
|
||||||
async fn get_user_from_cookie() -> Result<(), ServerFnError> {
|
async fn get_user_from_cookie() -> Result<(), ServerFnError> {
|
||||||
// Err(ServerFnError::new("Not authenticated"))
|
Err(ServerFnError::new("Not authenticated"))
|
||||||
Ok(())
|
// Ok(())
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
|
||||||
|
use crate::components::layout::icons;
|
||||||
|
use crate::util::model::member::Member;
|
||||||
|
|
||||||
pub fn Auth() -> Element {
|
pub fn Auth() -> Element {
|
||||||
let mut register = use_signal(|| false);
|
let mut register = use_signal(|| false);
|
||||||
|
|
||||||
@ -77,26 +80,63 @@ fn Login() -> Element {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn Register() -> Element {
|
fn Register() -> Element {
|
||||||
|
let mut members: Signal<Vec<Member>> = use_signal(|| vec![]);
|
||||||
|
let mut input_registration_token = use_signal(|| "".to_string());
|
||||||
|
|
||||||
rsx! {
|
rsx! {
|
||||||
form {
|
label {
|
||||||
label {
|
class: "form-control w-full join-item",
|
||||||
class: "form-control w-full",
|
div {
|
||||||
div {
|
class: "label",
|
||||||
class: "label",
|
span { class: "label-text", "Registratie code" },
|
||||||
span { class: "label-text", "Registratie code" },
|
|
||||||
}
|
|
||||||
input {
|
|
||||||
r#type: "text",
|
|
||||||
class: "input input-bordered w-full",
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
div {
|
div {
|
||||||
class: "card-actions mt-8",
|
class: "w-full join",
|
||||||
|
input {
|
||||||
|
r#type: "text",
|
||||||
|
class: "input input-bordered w-full join-item",
|
||||||
|
value: "{input_registration_token}",
|
||||||
|
oninput: move |event| input_registration_token.set(event.value())
|
||||||
|
},
|
||||||
button {
|
button {
|
||||||
class: "btn btn-primary",
|
class: "btn join-item btn-neutral",
|
||||||
"Registreren"
|
onclick: move |_| async move {
|
||||||
|
if let Ok(res) = fetch_member(input_registration_token()).await {
|
||||||
|
members.push(res);
|
||||||
|
input_registration_token.set("".to_string());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
icons::UserPlus {},
|
||||||
|
"Toevoegen",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
div {
|
||||||
|
class: "flex gap-x-2 mt-2 overflow-x-auto pb-3",
|
||||||
|
for member in &*members.read() {
|
||||||
|
div {
|
||||||
|
class: "badge badge-lg badge-neutral h-8 gap-1 hover:cursor-pointer hover:line-through whitespace-nowrap",
|
||||||
|
"{member.name.full}"
|
||||||
|
icons::XMark {},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
div {
|
||||||
|
class: "card-actions mt-8",
|
||||||
|
button {
|
||||||
|
class: "btn btn-primary",
|
||||||
|
"Volgende"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[server]
|
||||||
|
async fn fetch_member(registration_token: String) -> Result<Member, ServerFnError> {
|
||||||
|
let member = Member::fetch_from_registration_token(registration_token).await?;
|
||||||
|
|
||||||
|
match member {
|
||||||
|
Some(m) => Ok(m),
|
||||||
|
None => Err(ServerFnError::new("Lid niet gevonden")),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
|
||||||
|
// Icons are from heroicons (https://icones.js.org/collection/heroicons)
|
||||||
|
|
||||||
#[component]
|
#[component]
|
||||||
pub fn Home() -> Element {
|
pub fn Home() -> Element {
|
||||||
rsx! {
|
rsx! {
|
||||||
@ -80,3 +82,42 @@ pub fn Cog() -> Element {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[component]
|
||||||
|
pub fn UserPlus() -> Element {
|
||||||
|
rsx! {
|
||||||
|
svg {
|
||||||
|
"viewBox": "0 0 24 24",
|
||||||
|
height: "32",
|
||||||
|
"xmlns": "http://www.w3.org/2000/svg",
|
||||||
|
width: "32",
|
||||||
|
path {
|
||||||
|
"fill": "none",
|
||||||
|
"stroke": "currentColor",
|
||||||
|
"stroke-linecap": "round",
|
||||||
|
"d": "M18 7.5v3m0 0v3m0-3h3m-3 0h-3m-2.25-4.125a3.375 3.375 0 1 1-6.75 0a3.375 3.375 0 0 1 6.75 0M3 19.235v-.11a6.375 6.375 0 0 1 12.75 0v.109A12.3 12.3 0 0 1 9.374 21C7.043 21 4.862 20.355 3 19.234",
|
||||||
|
"stroke-linejoin": "round",
|
||||||
|
"stroke-width": "1.5"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[component]
|
||||||
|
pub fn XMark() -> Element {
|
||||||
|
rsx! {
|
||||||
|
svg {
|
||||||
|
"stroke": "currentColor",
|
||||||
|
"viewBox": "0 0 24 24",
|
||||||
|
"stroke-width": "1.5",
|
||||||
|
"fill": "none",
|
||||||
|
"xmlns": "http://www.w3.org/2000/svg",
|
||||||
|
class: "size-6",
|
||||||
|
path {
|
||||||
|
"d": "M6 18 18 6M6 6l12 12",
|
||||||
|
"stroke-linecap": "round",
|
||||||
|
"stroke-linejoin": "round"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -35,8 +35,24 @@ impl Member {
|
|||||||
|
|
||||||
let members: Vec<Self> = res.take(0)?;
|
let members: Vec<Self> = res.take(0)?;
|
||||||
|
|
||||||
|
tracing::info!("{:?}", members);
|
||||||
|
|
||||||
Ok(members)
|
Ok(members)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn fetch_from_registration_token(
|
||||||
|
registration_token: String,
|
||||||
|
) -> Result<Option<Self>, surrealdb::Error> {
|
||||||
|
let _ = Self::fetch_all().await?;
|
||||||
|
|
||||||
|
let query = format!("SELECT meta::id(id) as id, name.first, name.full, hours, groups, diploma, registration_token FROM ONLY member WHERE registration_token = {} LIMIT 1", registration_token);
|
||||||
|
|
||||||
|
let mut res = DB.query(query).await?;
|
||||||
|
|
||||||
|
let member: Option<Self> = res.take(0)?;
|
||||||
|
|
||||||
|
Ok(member)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl MembersMigration {
|
impl MembersMigration {
|
||||||
|
Loading…
Reference in New Issue
Block a user