bc0937fc7190a2c8deb910a37f330ffd30cc04b4
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

1) namespace repositories
2) {
3) 	
4) 	/**
5) 	 */
6) 	export var concept : (
7) 		helpers.repository<int, entities.concept>
8) 		&
9) 		{
10) 			get_translations : (language_from : string, language_to : string, part : string)=>Promise<Array<type_row>>;
11) 			export : ()=>Promise<Array<type_row>>;
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

12) 			search : (part : string)=>Promise<Array<type_row>>;
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

13) 		}
14) 	) =
15) 	{
16) 		"setup": async function ()
17) 		{
18) 			await repositories.concept_core.setup();
19) 			await repositories.concept_tags.setup();
20) 			await repositories.concept_translations.setup();
21) 			return Promise.resolve<void>(undefined);
22) 		},
23) 		"teardown": async function ()
24) 		{
25) 			await repositories.concept_translations.teardown();
26) 			await repositories.concept_tags.teardown();
27) 			await repositories.concept_core.teardown();
28) 			return Promise.resolve<void>(undefined);
29) 		},
30) 		"create": async function (concept_entity)
31) 		{
32) 			const row_core : type_row = {"type_id": concept_entity.type_id, "description": concept_entity.description};
33) 			const concept_id : int = await repositories.concept_core.create(row_core);
34) 			for await (let tag_id of concept_entity.tags)
35) 			{
36) 				const row_tag : type_row = {"concept_id": concept_id, "tag_id": tag_id};
37) 				const concept_tag_id : int = await repositories.concept_tags.create(row_tag);
38) 			}
39) 			for await (let {"language_id": language_id, "value": value} of concept_entity.translations)
40) 			{
41) 				const row_translations : type_row = {"concept_id": concept_id, "language_id": language_id, "value": value};
42) 				const concept_translations_id : int = await repositories.concept_translations.create(row_translations);
43) 			}
44) 			return Promise.resolve<int>(concept_id);
45) 		},
46) 		"update": function (concept_id, concept_entity)
47) 		{
48) 			throw (new Error("not implemented"));
49) 		},
50) 		"delete": async function (concept_id)
51) 		{
52) 			await repositories.concept_translations.purge("concept_id", concept_id);
53) 			await repositories.concept_tags.purge("concept_id", concept_id);
54) 			await repositories.concept_core.delete(concept_id);
55) 			return Promise.resolve<void>(undefined);
56) 		},
57) 		"read": async function (concept_id)
58) 		{
59) 			const row_core : type_row = await repositories.concept_core.read(concept_id);;
60) 			const rows_tags : Array<type_row> = await repositories.concept_tags.take("concept_id", concept_id);
61) 			const rows_translations : Array<type_row> = await repositories.concept_translations.take("concept_id", concept_id);
62) 			const concept_entity : entities.concept =
63) 			{
64) 				"type_id": row_core["type_id"],
65) 				"description": row_core["description"],
66) 				"tags": rows_tags.map(row_tag => row_tag["tag_id"]),
67) 				"translations": rows_translations.map(row_translation => ({"language_id": row_translation["language_id"], "value": row_translation["value"]})),
68) 			};
69) 			return Promise.resolve<entities.concept>(concept_entity);
70) 		},
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

71) 		"get_translations": function (language_from, language_to, part)
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

72) 		{
73) 			return helpers.database.query_get_named
74) 			(
75) 				"concept.get_translations",
76) 				{
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

77) 					"language_from": language_from,
78) 					"language_to": language_to,
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

79) 					"part": part.replace(new RegExp("-", "g"), "%"),
80) 				}
81) 			);
82) 		},
83) 		"export": function () : Promise<Array<type_row>>
84) 		{
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

85) 			return helpers.database.query_get_named("concept.dump", {"part": null});
86) 		},
87) 		"search": function (part) : Promise<Array<type_row>>
88) 		{
89) 			return helpers.database.query_get_named("concept.dump", {"part": part.replace(new RegExp("-", "g"), "%")});