feat: restructure project, implement askama templating #26

Merged
theo merged 21 commits from restructure-project into main 2024-07-26 14:42:03 +02:00
Owner

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) :

  • Déplacement des modules Rust dans un sous-dossier crates/
  • Implémentation modulaire d'askama (sous-dossiers templates/ et src/templates/)
  • Implémentation d'HTMx embarqué dans /assets
  • Builder Tauri + Axum : Quelle part d'async/await et de spawn/Arc/Mutex ?
  • Découpage des appels router.as_service().ready() pour une meilleure gestion des erreurs
  • Séparation du routeur Axum dans une librairie, associée à un module executable en dev
  • Renommage des modules
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) : - [x] Déplacement des modules Rust dans un sous-dossier `crates/` - [x] Implémentation modulaire d'askama (sous-dossiers `templates/` et `src/templates/`) - [x] Implémentation d'HTMx embarqué dans `/assets` - [x] Builder Tauri + Axum : Quelle part d'async/await et de spawn/Arc/Mutex ? - [x] Découpage des appels `router.as_service().ready()` pour une meilleure gestion des erreurs - [x] Séparation du routeur Axum dans une librairie, associée à un module executable en dev - [x] Renommage des modules
theo added 1 commit 2024-07-23 20:16:17 +02:00
florian_briand requested changes 2024-07-24 08:58:43 +02:00
Dismissed
florian_briand left a comment
Owner

Mon 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 :

  • on s'accorde, sur cette PR, sur ce qu'on prend ou pas
  • on démarre une nouvelle branche from scratch depuis main, et on y développe (en évitant les copier-coller) les trucs qu'on veut garder de cette PR
Mon 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 : - on s'accorde, sur cette PR, sur ce qu'on prend ou pas - on démarre une nouvelle branche from scratch depuis main, et on y développe (en évitant les copier-coller) les trucs qu'on veut garder de cette PR
@ -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

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
Author
Owner

totalement, sorry

J'avais relu vite fait ce que j'avais et je voyais pas de soucis avec, mais effectivement autant l'enlever :)

totalement, sorry J'avais relu vite fait ce que j'avais et je voyais pas de soucis avec, mais effectivement autant l'enlever :)
florian_briand marked this conversation as resolved
Cargo.toml Outdated
@ -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

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
Author
Owner

les deux me vont, on peut partir sur ca

les deux me vont, on peut partir sur ca
florian_briand marked this conversation as resolved
README.md Outdated
@ -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 :

  • anglais dans le code (commentaires, variables, fonctions...) sauf pour les éléments qui font référence à du français (termes métier français, fonctions de la lib sesam vitale...)
  • pas d'avis dans les messages de commit ; l'anglais a souvent l'avantage de la concision
  • dans les Readme, plutôt français, car + à même d'être lu par des gens avec un anglais limité, pour l'instant ?
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 : - anglais dans le code (commentaires, variables, fonctions...) sauf pour les éléments qui font référence à du français (termes métier français, fonctions de la lib sesam vitale...) - pas d'avis dans les messages de commit ; l'anglais a souvent l'avantage de la concision - dans les Readme, plutôt français, car + à même d'être lu par des gens avec un anglais limité, pour l'instant ?
Author
Owner

ca me va

ca me va
florian_briand marked this conversation as resolved
@ -0,0 +1,12 @@
[package]
name = "clego"

Clego c'est la partie moteur sesam-vitale :p

Clego c'est la partie moteur sesam-vitale :p
Author
Owner

Ah, faudrait qu'on trouve un nom pour le projet :)

J'envoie un msg sur matrix

Ah, faudrait qu'on trouve un nom pour le projet :) J'envoie un msg sur matrix
florian_briand marked this conversation as resolved
@ -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

Les versions des paquets ne sont pas les même partout ; entre autre ça ne sont pas les dernières versions
Author
Owner

que veux tu dire?

il faudrait passer tokio a 1.39.1 c'est ca?

que veux tu dire? il faudrait passer tokio a 1.39.1 c'est ca?
florian_briand marked this conversation as resolved
@ -0,0 +3,4 @@
use std::path::Path;
use askama_axum::IntoResponse;
use templates::{hello::HelloResponse, index::GetIndexResponse};

Trop bien cette structuration!

Trop bien cette structuration!
florian_briand marked this conversation as resolved
@ -0,0 +13,4 @@
id="hello"
hx-get="/hello"
hx-target="this"
hx-trigger="load"

Cool cet exemple d'autoload

Cool cet exemple d'autoload
florian_briand marked this conversation as resolved
@ -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.

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

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
Author
Owner

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 :)

Le Arc<Mutex<V>> 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 :)
Author
Owner

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 :)

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 :)
florian_briand marked this conversation as resolved
@ -0,0 +8,4 @@
"cwd": "../clego"
},
"devUrl": "http://localhost:3000",
"frontendDist": "axum://place.holder/"

Ah cool qu'on puisse faire ça !

Ah cool qu'on puisse faire ça !
florian_briand changed title from feat: restructure project, implement askama templating to WIP: feat: restructure project, implement askama templating 2024-07-24 08:59:11 +02:00
theo added 1 commit 2024-07-24 11:18:59 +02:00
theo added 1 commit 2024-07-24 11:24:10 +02:00
Author
Owner

Dé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

Dé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
theo added 1 commit 2024-07-24 11:58:44 +02:00
theo added 1 commit 2024-07-24 14:09:20 +02:00
florian_briand requested changes 2024-07-24 14:44:50 +02:00
Dismissed
@ -4,3 +2,2 @@
"tauri/src-tauri",
]
resolver = "2"
members = [

Packages :

  • tauri/src devient crates/app -> Interfaces et code métier via Axum + Askama + HTMx
  • tauri/src-tauri devient crates/desktop
  • clego devient crates/sesam-vitale
Packages : - `tauri/src` devient `crates/app` -> Interfaces et code métier via Axum + Askama + HTMx - `tauri/src-tauri` devient `crates/desktop` - `clego` devient `crates/sesam-vitale`
florian_briand marked this conversation as resolved
@ -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 ?

Les capabilities étaient fournies par le générateur de projet Tauri ; faudrait pas les laisser ?
Author
Owner

Ca correspondait a ce que on pouvait faire depuis le js, donc dans notre cas pas besoin :)

Ca correspondait a ce que on pouvait faire depuis le js, donc dans notre cas pas besoin :)
florian_briand marked this conversation as resolved
theo added 2 commits 2024-07-24 15:00:36 +02:00
theo added 1 commit 2024-07-24 15:18:06 +02:00
florian_briand added 1 commit 2024-07-24 20:36:23 +02:00
theo added 1 commit 2024-07-24 21:59:58 +02:00
theo added 1 commit 2024-07-24 22:16:08 +02:00
theo added 1 commit 2024-07-24 22:35:25 +02:00
florian_briand added 3 commits 2024-07-24 22:36:21 +02:00
theo changed title from WIP: feat: restructure project, implement askama templating to feat: restructure project, implement askama templating 2024-07-24 22:39:58 +02:00
theo added 1 commit 2024-07-24 22:42:14 +02:00
florian_briand added 3 commits 2024-07-24 23:40:46 +02:00
florian_briand approved these changes 2024-07-24 23:44:37 +02:00
Dismissed
theo added 1 commit 2024-07-25 09:21:54 +02:00
florian_briand approved these changes 2024-07-25 13:43:13 +02:00
Dismissed
theo changed title from feat: restructure project, implement askama templating to WIP: feat: restructure project, implement askama templating 2024-07-25 16:44:27 +02:00
theo added 1 commit 2024-07-26 14:07:21 +02:00
florian_briand approved these changes 2024-07-26 14:36:47 +02:00
theo changed title from WIP: feat: restructure project, implement askama templating to feat: restructure project, implement askama templating 2024-07-26 14:41:54 +02:00
theo merged commit 3a43428ad4 into main 2024-07-26 14:42:03 +02:00
Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: P4Pillon/Krys4lide#26
No description provided.