Browse Source

Reorganization and minor cleanups.

Kestrel 1 năm trước cách đây
mục cha
commit
4980173041

+ 1 - 1
microrm-macros/src/database.rs

@@ -57,7 +57,7 @@ pub fn derive(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
                 fn item_key() -> &'static str { #item_base_name }
                 fn dependency_keys() -> &'static [&'static str] { &[] } // TODO
 
-                fn accept_entity_visitor(visitor: &mut impl ::microrm::entity::EntityVisitor) {
+                fn accept_entity_visitor(visitor: &mut impl ::microrm::schema::entity::EntityVisitor) {
                     <#item_type as ::microrm::schema::DatabaseSpec>::accept_entity_visitor(visitor);
                 }
             }

+ 10 - 10
microrm-macros/src/entity.rs

@@ -67,7 +67,7 @@ pub fn derive(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
 
         quote! {
             #vis struct #part_combined_name;
-            impl ::microrm::entity::EntityPart for #part_combined_name {
+            impl ::microrm::schema::entity::EntityPart for #part_combined_name {
                 type Datum = #part_type;
                 type Entity = #entity_ident;
                 fn part_name() -> &'static str {
@@ -142,20 +142,20 @@ pub fn derive(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
         #[derive(Clone, Copy, PartialEq, PartialOrd, Debug, Hash)]
         #vis struct #id_ident (i64);
 
-        impl ::microrm::entity::EntityID for #id_ident {
+        impl ::microrm::schema::entity::EntityID for #id_ident {
             type Entity = #entity_ident;
 
             fn from_raw(raw: i64) -> Self { Self(raw) }
             fn into_raw(self) -> i64 { self.0 }
         }
 
-        impl ::microrm::datum::Datum for #id_ident {
+        impl ::microrm::schema::datum::Datum for #id_ident {
             fn sql_type() -> &'static str {
-                <i64 as ::microrm::datum::Datum>::sql_type()
+                <i64 as ::microrm::schema::datum::Datum>::sql_type()
             }
 
             fn bind_to<'a>(&self, stmt: &mut ::microrm::sqlite::Statement<'a>, index: usize) {
-                <i64 as ::microrm::datum::Datum>::bind_to(&self.0, stmt, index)
+                <i64 as ::microrm::schema::datum::Datum>::bind_to(&self.0, stmt, index)
             }
 
             fn build_from<'a>(
@@ -166,7 +166,7 @@ pub fn derive(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
             where
                 Self: Sized,
             {
-                let raw = <i64 as ::microrm::datum::Datum>::build_from(adata, stmt, index)?;
+                let raw = <i64 as ::microrm::schema::datum::Datum>::build_from(adata, stmt, index)?;
                 Ok((Self(raw.0), raw.1))
             }
 
@@ -175,25 +175,25 @@ pub fn derive(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
             }
         }
 
-        impl ::microrm::entity::Entity for #entity_ident {
+        impl ::microrm::schema::entity::Entity for #entity_ident {
             type Parts = #parts_list;
             type Uniques = #uniques_list;
             type ID = #id_ident;
 
-            fn build(values: <Self::Parts as ::microrm::entity::EntityPartList>::DatumList) -> Self {
+            fn build(values: <Self::Parts as ::microrm::schema::entity::EntityPartList>::DatumList) -> Self {
                 Self {
                     #(#build_struct),*
                 }
             }
 
             fn entity_name() -> &'static str { #entity_name }
-            fn accept_part_visitor(v: &mut impl ::microrm::entity::EntityPartVisitor) {
+            fn accept_part_visitor(v: &mut impl ::microrm::schema::entity::EntityPartVisitor) {
                 #(
                     #part_visit
                 );*
             }
 
-            fn accept_part_visitor_ref(&self, v: &mut impl ::microrm::entity::EntityPartVisitor) {
+            fn accept_part_visitor_ref(&self, v: &mut impl ::microrm::schema::entity::EntityPartVisitor) {
                 #(
                     #part_ref_visit
                 );*

+ 3 - 3
microrm/src/lib.rs

@@ -1,9 +1,9 @@
 // to make the proc_macros work inside the microrm crate; needed for tests and the metaschema.
 extern crate self as microrm;
 
-pub mod datum;
+// pub mod datum;
 pub mod db;
-pub mod entity;
+// pub mod entity;
 mod query;
 pub mod schema;
 
@@ -11,7 +11,7 @@ pub mod schema;
 pub use sqlite;
 
 pub mod prelude {
-    pub use crate::entity::Entity;
+    pub use crate::schema::entity::Entity;
     pub use crate::schema::{AssocMap, Database, IDMap};
     pub use microrm_macros::{Database, Entity};
 }

+ 3 - 3
microrm/src/query.rs

@@ -1,8 +1,8 @@
-use crate::entity::helpers::check_assoc;
+use crate::schema::entity::helpers::check_assoc;
 use crate::schema::{AssocMap, IDWrap};
 use crate::{
-    datum::{Datum, DatumList, DatumVisitor},
-    entity::{Entity, EntityID, EntityPart, EntityPartList, EntityPartVisitor},
+    schema::datum::{Datum, DatumList, DatumVisitor},
+    schema::entity::{Entity, EntityID, EntityPart, EntityPartList, EntityPartVisitor},
     schema::{EntityMap, IDMap},
 };
 use crate::{DBError, DBResult};

+ 5 - 2
microrm/src/schema.rs

@@ -1,11 +1,14 @@
 use crate::{
-    datum::Datum,
+    schema::datum::Datum,
     db::{Connection, DBConnection},
-    entity::{Entity, EntityPartList, EntityVisitor},
+    schema::entity::{Entity, EntityPartList, EntityVisitor},
     query,
 };
 use crate::{DBError, DBResult};
 
+pub mod datum;
+pub mod entity;
+
 mod build;
 mod collect;
 pub(crate) mod meta;

+ 2 - 2
microrm/src/schema/collect.rs

@@ -1,7 +1,7 @@
 use std::collections::HashMap;
 
-use crate::datum::Datum;
-use crate::entity::{Entity, EntityPart, EntityPartVisitor, EntityVisitor};
+use crate::schema::datum::Datum;
+use crate::schema::entity::{Entity, EntityPart, EntityPartVisitor, EntityVisitor};
 
 #[derive(Debug)]
 pub enum PartType {

+ 6 - 4
microrm/src/datum.rs → microrm/src/schema/datum.rs

@@ -1,4 +1,9 @@
-use crate::{entity::EntityVisitor, schema::{AssocData, DatumDiscriminator}, DBResult};
+use crate::{schema::{AssocData, DatumDiscriminator, EntityVisitor}, DBResult};
+
+// trait implementations for Datum
+mod datum_common;
+// trait implementations for DatumList
+mod datum_list;
 
 // ----------------------------------------------------------------------
 // Datum and related types
@@ -32,6 +37,3 @@ pub trait DatumList {
 pub trait DatumVisitor {
     fn visit<ED: Datum>(&mut self, datum: &ED);
 }
-
-// trait implementations for EntityDatumList
-mod datum_list;

+ 1 - 3
microrm/src/entity/datum.rs → microrm/src/schema/datum/datum_common.rs

@@ -1,6 +1,4 @@
-use crate::{schema::AssocData, DBResult};
-
-use super::Datum;
+use crate::{schema::{AssocData,Datum}, DBResult};
 
 impl Datum for String {
     fn sql_type() -> &'static str {

+ 0 - 0
microrm/src/datum/datum_list.rs → microrm/src/schema/datum/datum_list.rs


+ 1 - 2
microrm/src/entity.rs → microrm/src/schema/entity.rs

@@ -1,12 +1,11 @@
 use std::{fmt::Debug, hash::Hash};
 
 use crate::{
-    datum::{Datum, DatumList},
+    schema::datum::{Datum, DatumList},
     db::DBConnection,
     DBResult,
 };
 
-mod datum;
 pub(crate) mod helpers;
 
 /// Integral identifier for an entity.

+ 1 - 1
microrm/src/entity/helpers.rs → microrm/src/schema/entity/helpers.rs

@@ -1,4 +1,4 @@
-use crate::entity::{Datum, Entity, EntityVisitor};
+use crate::schema::entity::{Datum, Entity, EntityVisitor};
 
 use super::EntityPart;
 

+ 0 - 0
microrm/src/entity/part_list.rs → microrm/src/schema/entity/part_list.rs