DataObjects/core_functions.sql
[Pman.Core] / DataObjects / core_functions.sql
1
2
3 DROP FUNCTION IF EXISTS i18n_translate;
4 DELIMITER $$
5 CREATE FUNCTION i18n_translate(in_ltype  varchar(1) , in_lkey varchar(8), in_inlang varchar(8)) 
6         RETURNS VARCHAR(64) DETERMINISTIC
7     BEGIN
8         DECLARE ret  VARCHAR(64);
9         DECLARE v_id INTEGER;
10         SET ret  = '';
11         SET id = 0;
12         SELECT id, lval  INTO v_id, ret FROM i18n
13             WHERE ltype=in_ltype AND lkey=in_lkey and inlang=in_inlang LIMIT 1;
14
15         IF id > 0 THEN 
16             RETURN ret;
17         END IF;
18
19         -- we do not have it  - return the english.
20         
21         SELECT id, lval  INTO v_id, ret FROM i18n
22             WHERE ltype=in_ltype AND lkey=in_lkey and inlang='en' LIMIT 1;
23
24         IF id > 0 THEN 
25             RETURN ret;
26         END IF;
27         
28
29         RETURN '??';
30         
31     END $$
32 DELIMITER ;
33
34 DROP FUNCTION IF EXISTS core_enum_seqmax_update;
35 DELIMITER $$
36 CREATE FUNCTION core_enum_seqmax_update( in_etype varchar(128))
37         RETURNS INT(11) DETERMINISTIC
38
39 BEGIN
40         DECLARE v_seqmax INT(11);
41         SELECT MAX(seqid) +1 INTO v_seqmax FROM core_enum WHERE
42             etype = in_etype;
43         UPDATE core_enum SET seqmax = v_seqmax WHERE etype = in_etype;
44         RETURN v_seqmax;
45     END $$
46 DELIMITER ;
47
48 -- usage: SELECT core_enum_seqmax_update(DISTINCT(etype)) FROM core_enum;
49 DROP TABLE IF EXISTS core_enum_tmp;
50 CREATE TEMPORARY TABLE core_enum_tmp SELECT DISTINCT(etype) FROM core_enum;
51 SELECT core_enum_seqmax_update(etype) FROM core_enum_tmp;
52 DROP TABLE IF EXISTS core_enum_tmp;