feat: restructure project, implement askama templating #26
No reviewers
Labels
No Label
bug
duplicate
enhancement
help wanted
independant
invalid
module/autre
module/backend
module/desktop
module/docs
module/frontend
module/scripts
module/sesam-vitale
module/utils
open-source
question
to-triage
wontfix
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: P4Pillon/Krys4lide#26
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "restructure-project"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Cette PR propose un ensemble de modifications / ajouts / restructurations. Il convient possiblement de s'accorder sur les éléments qu'on souhaite intégrer et ceux qu'on ne souhaite pas.
Éléments (si coché : à intégrer ; si barré : à ne pas intégrer) :
crates/
templates/
etsrc/templates/
)/assets
router.as_service().ready()
pour une meilleure gestion des erreursMon impression, c'est que tu as "copier-coller" du code et des fichiers qui venaient d'ailleurs, ce qui vient un peu bousculer l'existant.
Cela dit, la PR contient plein de trucs hyper intéressant aussi ! Ça fait donc un mélange de trucs bien et de trucs un peu ... décalés.
Proposition :
@ -15,0 +20,4 @@
lerna-debug.log*
node_modules
dist
Est ce que tu as copier-coller un gitignore d'ailleurs ? Car y'a plein de refdy des fichiers / dossiers qu'on n'a pas de raison d'avoir
totalement, sorry
J'avais relu vite fait ce que j'avais et je voyais pas de soucis avec, mais effectivement autant l'enlever :)
@ -6,1 +2,4 @@
resolver = "2"
members = [
"crates/clego",
"crates/tauri"
J'avais fait le choix de mettre les modules à la racine, plutôt que dans sous dossier crates, car ça vient, à mon goût, surcharger l'arborescence sans qu'on en ai réellement besoin n
les deux me vont, on peut partir sur ca
@ -4,0 +4,4 @@
## Crates
- `clego`: Axum backend lib for tauri client. Can be used as a lib or started as a web server.
Va falloir qu'on s'aligne sur les langues qu'on utilise (dans les noms des commit, dans le code, dans les Readme :p)
Mon avis à chaud :
ca me va
@ -0,0 +1,12 @@
[package]
name = "clego"
Clego c'est la partie moteur sesam-vitale :p
Ah, faudrait qu'on trouve un nom pour le projet :)
J'envoie un msg sur matrix
@ -0,0 +7,4 @@
askama = "0.12.1"
askama_axum = "0.4.0"
axum = "0.7.5"
tokio = { version = "1.38.1", features = ["macros", "rt-multi-thread"] }
Les versions des paquets ne sont pas les même partout ; entre autre ça ne sont pas les dernières versions
que veux tu dire?
il faudrait passer tokio a 1.39.1 c'est ca?
@ -0,0 +3,4 @@
use std::path::Path;
use askama_axum::IntoResponse;
use templates::{hello::HelloResponse, index::GetIndexResponse};
Trop bien cette structuration!
@ -0,0 +13,4 @@
id="hello"
hx-get="/hello"
hx-target="this"
hx-trigger="load"
Cool cet exemple d'autoload
@ -0,0 +23,4 @@
Ok(())
})
.register_asynchronous_uri_scheme_protocol("axum", move |app, request, responder| {
let router = Arc::clone(&app.state::<Arc<Mutex<axum::Router>>>());
Est-ce que tu sais ce que font ces empilements de Arc / Mutex et pourquoi c'est là ? Ou bien c'est un copier-coller ?
J'avais justement essayé, dans la version précédente, de simplifier au maximum, pour éviter d'avoir une seule ligne de code qui viennent d'ailleurs et dont on n'ait pas la maîtrise.
De plus, le code était + découpé et + lisible dans la version précédente ; il me parait préférable d'itérer sur l'existant plutôt que de venir tout écraser avec une autre façon de faire
Le Arc<Mutex> est utilise pour faire de la communication async dans rust, on peut pas vraiment faire sans.
Pour Arc: "Arc is a smart pointer enabling sharing data between threads. Its name is a shortcut for "atomic reference counter". The way Arc works is essentially to wrap a value we're trying to share and act as a pointer to it. Arc keeps track of all of the copies of the pointer and as soon as the last pointer goes out of scope it can safely free the memory. "
Pour Mutex: " Mutexes in many languages are treated like semaphores. You create a mutex object and you can guard a certain piece (or pieces) of the code with the mutex in a way that only one thread at a time can access the guarded place. In Rust Mutex behaves more like a wrapper. It consumes the underlying value and let's you access it only after locking the mutex. Typically Mutex is used with conjunction with Arc to make it easier to share it between threads."
Donc c'en gros, vu qu'on veut une seul instance du router et qu'on fait de l'async, on peut pas faire sans.
Article qui en parle: https://itsallaboutthebit.com/arc-mutex/
Pour ta remarque sur la maitrise du code:
1 - L'interface entre les deux libraires ser inevitablement un point de complexite, on evitera de faire ca dans le futur.
2 - Je pense que si on se heurte a des limite dans nos connaissances, il faudrait qu'on se pose la question si cela ne vaudrait pas le coup d'approfondir :)
Pour ton deuxième commentaire,
Initialement, je pensais que la logique procédurale du code était claire et qu'il n'était pas nécessaire de la diviser en fonctions. Je préfère éviter d'ajouter des abstractions tant qu'elles ne sont pas nécessaires.
Cela dit, je comprends ton point de vue sur l'importance de ne pas imposer une méthode différente sans raison valable. Mon intention n'était pas de manquer de respect à ton travail.
Je vais proposer une version plus claire du code. J'attends tes retours :)
@ -0,0 +8,4 @@
"cwd": "../clego"
},
"devUrl": "http://localhost:3000",
"frontendDist": "axum://place.holder/"
Ah cool qu'on puisse faire ça !
feat: restructure project, implement askama templatingto WIP: feat: restructure project, implement askama templatingDéplacement des modules Rust dans un sous-dossier crates -> apres avoir fait le changement vers le root du projet je realise que ca pose un soucis, on melange du coup les dossier scripts et projets, j'avais mal lu ton commentaire donc je revert au sous-dossier crates
@ -4,3 +2,2 @@
"tauri/src-tauri",
]
resolver = "2"
members = [
Packages :
tauri/src
devientcrates/app
-> Interfaces et code métier via Axum + Askama + HTMxtauri/src-tauri
devientcrates/desktop
clego
devientcrates/sesam-vitale
@ -14,4 +0,0 @@
"tray:default",
"shell:allow-open"
]
}
Les capabilities étaient fournies par le générateur de projet Tauri ; faudrait pas les laisser ?
Ca correspondait a ce que on pouvait faire depuis le js, donc dans notre cas pas besoin :)
org.
to tauri identifier f6a1af5d1eWIP: feat: restructure project, implement askama templatingto feat: restructure project, implement askama templatingfeat: restructure project, implement askama templatingto WIP: feat: restructure project, implement askama templatingWIP: feat: restructure project, implement askama templatingto feat: restructure project, implement askama templating