Added multilingual test to triggers.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s

This commit is contained in:
2026-03-09 11:43:05 -04:00
parent ad92e6e6d5
commit fc2149153e
5 changed files with 92 additions and 18 deletions

View File

@@ -295,8 +295,8 @@ impl DocDef {
&mut self.field_names
}
pub fn add_field(&mut self, name: Name, ftype: FieldType) {
let id = self.field_names.add_names([name].to_vec()).unwrap();
pub fn add_field(&mut self, names: Vec<Name>, ftype: FieldType) {
let id = self.field_names.add_names(names).unwrap();
self.fields.insert(id, FieldSetting::new(ftype));
}
@@ -418,7 +418,7 @@ mod docdefs {
let mut docdef = DocDef::new(docname);
let name = Name::english(Uuid::new_v4().to_string().as_str());
let field_type = FieldType::Uuid;
docdef.add_field(name.clone(), field_type.clone());
docdef.add_field(vec![name.clone()], field_type.clone());
let result = docdef.get_field(name).unwrap();
match result.validate(&Uuid::new_v4().into()) {
Ok(_) => {}
@@ -434,8 +434,8 @@ mod docdefs {
let field2 = Name::english("field2");
let ftype1 = FieldType::Uuid;
let ftype2 = FieldType::StaticString;
docdef.add_field(field1.clone(), ftype1.clone());
docdef.add_field(field2.clone(), ftype2.clone());
docdef.add_field(vec![field1.clone()], ftype1.clone());
docdef.add_field(vec![field2.clone()], ftype2.clone());
assert_eq!(docdef.get_field_type(&field1).unwrap(), &ftype1);
assert_eq!(docdef.get_field_type(&field2).unwrap(), &ftype2);
}
@@ -461,7 +461,7 @@ mod docdefs {
let names = ["one", "two", "three"];
let field_type = FieldType::StaticString;
for name in names.iter() {
docdef.add_field(Name::english(name), field_type.clone());
docdef.add_field(vec![Name::english(name)], field_type.clone());
}
for name in names.iter() {
let result = docdef.get_field(Name::english(name)).unwrap();
@@ -477,7 +477,7 @@ mod docdefs {
let docname = Name::english("something");
let mut docdef = DocDef::new(docname);
let name = Name::english("defaultfunction");
docdef.add_field(name.clone(), FieldType::StaticString);
docdef.add_field(vec![name.clone()], FieldType::StaticString);
docdef.set_default(&name, FieldType::StaticString).unwrap();
match docdef.get_field(name).unwrap().validate(&Field::None) {
Ok(data) => match data {
@@ -507,7 +507,7 @@ mod docdefs {
let docname = Name::english("something");
let mut docdef = DocDef::new(docname);
let name = Name::english("defaultvalue");
docdef.add_field(name.clone(), FieldType::Uuid);
docdef.add_field(vec![name.clone()], FieldType::Uuid);
match docdef.set_default(&name, "fred") {
Ok(data) => unreachable!("got {:?}, should be an error", data),
Err(err) => match err.get_error_ids().back().unwrap() {

View File

@@ -20,30 +20,46 @@ impl Session {
pub fn doc_names() -> Vec<Name> {
let mut names = Vec::new();
names.push(Name::english("session"));
names.push(Name::japanese("セッション"));
names
}
pub fn id_field_names() -> Vec<Name> {
let mut names = Vec::new();
names.push(Name::english("id"));
names.push(Name::japanese("身元"));
names
}
pub fn expire_field_names() -> Vec<Name> {
let mut names = Vec::new();
names.push(Name::english("expire"));
names.push(Name::japanese("期限切れ"));
names
}
pub fn document_definition() -> DocDef {
let name_id = Self::id_field_names()[0].clone();
let name_expire = Self::expire_field_names()[0].clone();
let mut docdef = DocDef::with_names(Self::doc_names());
let mut calc = Calculation::new(Operand::Add);
calc.add_value(FieldType::DateTime).unwrap();
calc.add_value(Duration::from_hours(1)).unwrap();
let name_id = Name::english("id");
docdef.add_field(name_id.clone(), FieldType::Uuid);
docdef.add_field(Self::id_field_names(), FieldType::Uuid);
docdef.set_default(&name_id, FieldType::Uuid).unwrap();
docdef.add_index(&name_id, IndexType::Unique).unwrap();
let name_expire = Name::english("expire");
docdef.add_field(name_expire.clone(), FieldType::DateTime);
docdef.add_field(Self::expire_field_names(), FieldType::DateTime);
docdef.set_default(&name_expire, calc.clone()).unwrap();
docdef.add_index(&name_expire, IndexType::Index).unwrap();
let mut update = Update::new(Session::doc_names()[0].clone());
update
.get_values_mut()
.add_field(name_expire.clone(), calc.clone());
.add_field(Self::expire_field_names()[0].clone(), calc.clone());
let path = Path::new(
Include::All,
Include::Just(Session::doc_names()[0].clone().into()),
@@ -59,7 +75,7 @@ impl Session {
.add_value(CalcValue::Existing(FieldType::DateTime))
.unwrap();
delete_calc.add_value(FieldType::DateTime).unwrap();
delete_qry.add(name_expire.clone(), delete_calc);
delete_qry.add(Self::expire_field_names()[0].clone(), delete_calc);
let delete_func = DocFuncType::Trigger(delete.into());
docdef.add_route(Clock::get_path(), delete_func);