Pengalaman tumpukan penuh terbaik.
PERINGATAN Proyek ini dalam pratinjau awal.
Proyek ini dapat digunakan sebagai CLI:
cargo install ultime
Proyek ini mencakup fitur yang akan memberi Anda alur kerja pengembangan yang lebih cepat dan lebih baik menggunakan tumpukan teknologi berikut:
Fitur utama adalah otomatis pembuatan kode berdasarkan skema dan pertanyaan SurrealDB Anda. Proyek Ultime seharusnya terlihat seperti ini:
/schemas · folder skema dari migrasi surealdb/events · Folder Acara dari SurealDB-Migrations/migrations · Folder Migrasi dari SurrealDB-Migrations/queries · Daftar file .surql yang berisi kueri spesifik untuk proyek Anda (hanya mengambil data)/mutations · Daftar file .surql yang berisi mutasi spesifik untuk proyek Anda (ubah data)/src/api · Daftar titik akhir API/components · Daftar komponen yang dapat digunakan di mana saja/db/crud · Fungsi untuk Operasi CRUD Dasar, yang dihasilkan dari /schemas/events · Fungsi untuk Melaksanakan Acara SurealDB, yang dihasilkan dari /events File/mutations · fungsi untuk memperbarui db, dihasilkan dari /mutations file/queries · Fungsi untuk meminta DB, dihasilkan dari /queries file/models · Daftar struct yang digunakan dalam aplikasiqueries.rs /queriesmutations.rs · Jenis respons dari setiap mutasi dari /mutations (file ini saat ini tidak dihasilkan secara otomatis)/pages · Daftar komponen orde tinggi yang dapat digunakan sebagai rute Pertama, Anda perlu membuat proyek baru menggunakan salah satu templat yang telah ditentukan. Jadi, misalnya:
ultime new my-blog --template blog
Direktori baru akan dibuat. Anda dapat cd ke direktori baru ini dan menjalankan perintah berikut:
ultime
Perintah ini akan:
db dari /schemas , /events , /queries dan /mutations Sampai sekarang, tidak mungkin untuk secara otomatis mendeteksi output file .surql: queries atau mutations . Namun, suatu tipe secara otomatis dihasilkan untuk Anda sehingga yang Anda butuhkan hanyalah menentukan sifat -sifat jenis ini. Semua model harus didefinisikan dalam folder /src/models .
Berikut adalah contoh definisi model dari respons /queries/posts.surql kueri:
use serde :: { Deserialize , Serialize } ;
# [ derive ( Debug , Clone , PartialEq , Serialize , Deserialize ) ]
pub struct PostsQueryItem {
pub id : String ,
pub title : String ,
pub content : String ,
pub status : String ,
pub number_of_comments : u16 ,
}
pub type PostsQuery = Vec < PostsQueryItem > ; Contoh lain dari respons /mutations/comment.surql kueri:
use serde :: { Deserialize , Serialize } ;
# [ derive ( Debug , Clone , PartialEq , Serialize , Deserialize ) ]
pub struct CommentMutationItem {
pub id : String ,
pub content : String ,
}
pub type CommentMutation = Vec < CommentMutationItem > ;Untuk membedakan variabel internal dan variabel input, kami menetapkan pola yang harus diikuti agar berhasil mengekstrak variabel kueri dan mutasi.
Mutasi berikut ...
// $user_id: String
// $post_id: Option < String >
// $comment_id: Option < String >
// $content: String
LET $user = ( SELECT * FROM type::thing( " user " , $user_id));
LET $post_or_comment = ( SELECT * FROM type::thing( " post " , $post_id), type::thing( " comment " , $comment_id));
RELATE $user - > comment - > $post_or_comment
SET content = $content;... akan menghasilkan fungsi ini:
pub async fn mutate_comment < C : Connection > (
db : & ' _ Surreal < C > ,
user_id : String ,
post_id : Option < String > ,
comment_id : Option < String > ,
content : String
) -> Result < CommentMutation > {
const QUERY : & str = include_str ! ( "../../../mutations/comment.surql" ) ;
let result : CommentMutation = db
. query ( QUERY )
. bind ( ( "user_id" , user_id ) )
. bind ( ( "post_id" , post_id ) )
. bind ( ( "comment_id" , comment_id ) )
. bind ( ( "content" , content ) )
. await ?
. take ( 0 ) ? ;
Ok ( result )
}Seperti yang Anda lihat, komentar harus mengikuti aturan:
$ ):Untuk membantu Anda memulai dengan cepat, ada daftar templat yang telah ditentukan sebelumnya yang dapat Anda gunakan:
| Templat | Keterangan |
|---|---|
| kosong | Proyek Ultime terkecil yang dapat Anda buat. Skema bersih dengan tabel script_migration yang sudah ditentukan untuk menyimpan migrasi yang diterapkan.Aplikasi Leptos Dasar dengan contoh penghitung. |
| Blog | Aplikasi blog: Buat posting blog baru, publikasikan/buka posting dan komentar. |
Anda dapat membuat proyek Ultime baru menggunakan baris perintah berikut:
ultime new <PROJECT_NAME> --template <TEMPLATE>