]> git.stg.codes - stg.git/blob - stargazer/inst/var/00-base-00.sql
Port to CMake, get rid of os_int.h.
[stg.git] / stargazer / inst / var / 00-base-00.sql
1 /*
2  *    This program is free software; you can redistribute it and/or modify
3  *    it under the terms of the GNU General Public License as published by
4  *    the Free Software Foundation; either version 2 of the License, or
5  *    (at your option) any later version.
6  *
7  *    This program is distributed in the hope that it will be useful,
8  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
9  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  *    GNU General Public License for more details.
11  *
12  *    You should have received a copy of the GNU General Public License
13  *    along with this program; if not, write to the Free Software
14  *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
15  */
16
17 /*
18  *****************************************************************************
19  *
20  * Скрипт генерации структуры базы для хранения данных Stargazer-a
21  *
22  * $Id: 00-base-00.sql,v 1.7 2010/01/06 14:41:13 faust Exp $
23  *
24  * Примечание.
25  *      * dm_permission_flag. Представляет собой битовую маску - rw.
26  *          r - чтение, w - изменение параметра.
27  *          0 - дествие запрещено, 1 - действие разрешено
28  *
29  *      * dm_traff_type. Число определяющее тип подсчета трафика:
30  *          0 - up - считается по upload
31  *          1 - down - считается по download
32  *          2 - max - считается по максимальному среди upload/download
33  *          3 - up+down - считается по сумме upload и download
34  *
35  *      * dm_ip. IP адресс в виде четырех байтового целого числа со знаком.
36  *        Выполнять приведение к знаковуму целому при занесении IP в БД!!!
37  *
38  *      * dm_period. Задает периодичность показа сообщения пользователю.
39  *        Период задается целым числом (int16). Если значение равно 0 то
40  *        сообщение показывается только при подключении пользователя.
41  *        Также этот домен определяет промежуток времени в течении которого
42  *        сообщение показывается пользователю.
43  *
44  *      * dm_session_event_type. Указывает тип записи в логе о сессии.
45  *        'c' - connect, 'd' - disconnect.
46  *
47  *****************************************************************************
48  */
49
50 /*
51  * CONNECT 'localhost:/var/stg/stargazer.fdb' USER 'stg' PASSWORD '123456';
52  * DROP DATABASE;
53  *
54  * CREATE DATABASE 'localhost:/var/stg/stargazer.fdb' USER 'stg' PASSWORD '123456' DEFAULT CHARACTER SET UTF8;
55  */
56
57  
58
59 /*
60  *****************************************************************************
61  * -= Создание ДОМЕНОВ =-
62  *****************************************************************************
63  */
64
65 CREATE DOMAIN dm_id AS INTEGER NOT NULL;
66 CREATE DOMAIN dm_null_id AS INTEGER;
67 CREATE DOMAIN dm_login AS VARCHAR(32) NOT NULL;
68 CREATE DOMAIN dm_tariff_name AS VARCHAR(32) NOT NULL;
69 CREATE DOMAIN dm_group_name AS VARCHAR(32);
70 CREATE DOMAIN dm_corporation_name AS VARCHAR(32);
71 CREATE DOMAIN dm_parameter_name AS VARCHAR(32);
72
73 CREATE DOMAIN dm_password AS VARCHAR(64) NOT NULL;
74 /* bitmask - rw => Read, Write */
75 CREATE DOMAIN dm_permission_flag AS SMALLINT NOT NULL
76     CHECK ( VALUE BETWEEN 0 AND 3 );
77 CREATE DOMAIN dm_money AS NUMERIC(10,6) NOT NULL;
78 /* (0, 1, 2, 3) => (up, down, max, up+down) */
79 CREATE DOMAIN dm_traff_type AS SMALLINT NOT NULL
80     CHECK ( VALUE BETWEEN 0 AND 3 );
81 CREATE DOMAIN dm_dir_num AS SMALLINT NOT NULL;
82 CREATE DOMAIN dm_num AS SMALLINT NOT NULL;
83 CREATE DOMAIN dm_traffic_mb AS INTEGER NOT NULL;
84 CREATE DOMAIN dm_traffic_byte AS BIGINT NOT NULL;
85 CREATE DOMAIN dm_time AS TIME NOT NULL;
86 CREATE DOMAIN dm_moment AS TIMESTAMP NOT NULL;
87 CREATE DOMAIN dm_credit_moment AS TIMESTAMP;
88 CREATE DOMAIN dm_ip AS INTEGER NOT NULL;
89 CREATE DOMAIN dm_mask AS INTEGER NOT NULL;
90 CREATE DOMAIN dm_user_address AS VARCHAR(256) DEFAULT '';
91 CREATE DOMAIN dm_bool AS CHAR(1) NOT NULL
92     CHECK ( VALUE IN ('0', '1', 't', 'f', 'T', 'F') );
93 CREATE DOMAIN dm_email AS VARCHAR(256) DEFAULT '';
94 CREATE DOMAIN dm_note AS VARCHAR(256) DEFAULT '';
95 CREATE DOMAIN dm_phone AS VARCHAR(256) DEFAULT '';
96 CREATE DOMAIN dm_user_name AS VARCHAR(256) DEFAULT '';
97 CREATE DOMAIN dm_service_comment AS VARCHAR(256) DEFAULT '';
98 CREATE DOMAIN dm_service_name AS VARCHAR(32) DEFAULT '';
99
100 CREATE DOMAIN dm_pay_day AS SMALLINT NOT NULL
101     CHECK ( VALUE BETWEEN 0 AND 31 );
102 CREATE DOMAIN dm_period AS INTEGER NOT NULL;
103 CREATE DOMAIN dm_counter AS SMALLINT NOT NULL;
104
105 CREATE DOMAIN dm_message_ver AS INTEGER NOT NULL;
106 CREATE DOMAIN dm_message_type AS INTEGER NOT NULL;
107
108 CREATE DOMAIN dm_message AS VARCHAR(256) NOT NULL;
109 CREATE DOMAIN dm_user_data AS VARCHAR(256) NOT NULL;
110 CREATE DOMAIN dm_session_event_type AS CHAR(1) NOT NULL
111     CHECK ( VALUE IN ('c', 'd') );
112 CREATE DOMAIN dm_char_value AS VARCHAR(64) NOT NULL;
113 CREATE DOMAIN dm_date AS DATE NOT NULL;
114
115
116
117 /*
118  *****************************************************************************
119  * -= Создание ТАБЛИЦ =-
120  *****************************************************************************
121  */
122
123 CREATE TABLE tb_admins
124 (
125     pk_admin dm_id PRIMARY KEY,
126     login dm_login UNIQUE,
127     passwd dm_password,
128     chg_conf dm_permission_flag,
129     chg_password dm_permission_flag,
130     chg_stat dm_permission_flag,
131     chg_cash dm_permission_flag,
132     usr_add_del dm_permission_flag,
133     chg_tariff dm_permission_flag,
134     chg_admin dm_permission_flag,
135     chg_service dm_permission_flag,
136     chg_corporation dm_permission_flag
137 );
138
139 CREATE TABLE tb_tariffs
140 (
141     pk_tariff dm_id PRIMARY KEY,
142     name dm_tariff_name UNIQUE,
143     fee dm_money,
144     free dm_money,
145     passive_cost dm_money,
146     traff_type dm_traff_type
147 );
148
149 CREATE TABLE tb_tariffs_params
150 (
151     pk_tariff_param dm_id PRIMARY KEY,
152     fk_tariff dm_id,
153     dir_num dm_dir_num,
154     price_day_a dm_money,
155     price_day_b dm_money,
156     price_night_a dm_money,
157     price_night_b dm_money,
158     threshold dm_traffic_mb,
159     time_day_begins dm_time,
160     time_day_ends dm_time,
161
162     FOREIGN KEY (fk_tariff) REFERENCES tb_tariffs (pk_tariff)
163 );
164
165 CREATE TABLE tb_corporations
166 (
167     pk_corporation dm_id PRIMARY KEY,
168     name dm_corporation_name UNIQUE,
169     cash dm_money
170 );
171
172 CREATE TABLE tb_users
173 (
174     pk_user dm_id PRIMARY KEY,
175     fk_tariff dm_null_id,
176     fk_tariff_change dm_null_id,
177     fk_corporation dm_null_id,
178     address dm_user_address,
179     always_online dm_bool,
180     credit dm_money,
181     credit_expire dm_credit_moment,
182     disabled dm_bool,
183     disabled_detail_stat dm_bool,
184     email dm_email,
185     grp dm_group_name,
186     note dm_note,
187     passive dm_bool,
188     passwd dm_password,
189     phone dm_phone,
190     name dm_login UNIQUE,
191     real_name dm_user_name,
192
193     FOREIGN KEY (fk_tariff) REFERENCES tb_tariffs (pk_tariff),
194     FOREIGN KEY (fk_tariff_change) REFERENCES tb_tariffs (pk_tariff),
195     FOREIGN KEY (fk_corporation) REFERENCES tb_corporations (pk_corporation)
196 );
197
198 CREATE TABLE tb_detail_stats
199 (
200     pk_detail_stat dm_id PRIMARY KEY,
201     fk_user dm_id,
202     dir_num dm_dir_num,
203     ip dm_ip,
204     download dm_traffic_byte,
205     upload dm_traffic_byte,
206     cost dm_money,
207     from_time dm_moment,
208     till_time dm_moment,
209
210     FOREIGN KEY (fk_user) REFERENCES tb_users (pk_user)
211 );
212
213 CREATE TABLE tb_services
214 (
215     pk_service dm_id PRIMARY KEY,
216     name dm_service_name UNIQUE,
217     comment dm_service_comment,
218     cost dm_money,
219     pay_day dm_pay_day
220 );
221
222 CREATE TABLE tb_users_services
223 (
224     pk_user_service dm_id PRIMARY KEY,
225     fk_user dm_id,
226     fk_service dm_id,
227
228     FOREIGN KEY (fk_user) REFERENCES tb_users (pk_user),
229     FOREIGN KEY (fk_service) REFERENCES tb_services (pk_service)
230 );
231
232 CREATE TABLE tb_messages
233 (
234     pk_message dm_id PRIMARY KEY,
235     fk_user dm_id,
236     ver dm_message_ver,
237     msg_type dm_message_type,
238     last_send_time dm_period,
239     creation_time dm_period,
240     show_time dm_period,
241     repeat dm_counter,
242     repeat_period dm_period,
243     msg_text dm_message,
244
245     FOREIGN KEY (fk_user) REFERENCES tb_users (pk_user)
246 );
247
248 CREATE TABLE tb_stats
249 (
250     pk_stat dm_id PRIMARY KEY,
251     fk_user dm_id,
252     cash dm_money,
253     free_mb dm_money,
254     last_activity_time dm_moment,
255     last_cash_add dm_money,
256     last_cash_add_time dm_moment,
257     passive_time dm_period,
258     stats_date dm_date,
259
260     FOREIGN KEY (fk_user) REFERENCES tb_users (pk_user)
261 );
262
263 CREATE TABLE tb_stats_traffic
264 (
265     pk_stat_traffic dm_id PRIMARY KEY,
266     fk_stat dm_id,
267     dir_num dm_dir_num,
268     download dm_traffic_byte,
269     upload dm_traffic_byte,
270
271     FOREIGN KEY (fk_stat) REFERENCES tb_stats (pk_stat)
272 );
273
274 CREATE TABLE tb_users_data
275 (
276     pk_user_data dm_id PRIMARY KEY,
277     fk_user dm_id,
278     num dm_num,
279     data dm_user_data,
280
281     FOREIGN KEY (fk_user) REFERENCES tb_users (pk_user)
282 );
283
284 CREATE TABLE tb_allowed_ip
285 (
286     pk_allowed_ip dm_id PRIMARY KEY,
287     fk_user dm_id,
288     ip dm_ip,
289     mask dm_mask,
290
291     FOREIGN KEY (fk_user) REFERENCES tb_users (pk_user)
292 );
293
294 CREATE TABLE tb_sessions_log
295 (
296     pk_session_log dm_id PRIMARY KEY,
297     fk_user dm_id,
298     event_time dm_moment,
299     event_type dm_session_event_type,
300     ip dm_ip,
301
302     FOREIGN KEY (fk_user) REFERENCES tb_users (pk_user)
303 );
304
305 CREATE TABLE tb_sessions_data
306 (
307     pk_session_data dm_id PRIMARY KEY,
308     fk_session_log dm_id,
309     dir_num dm_dir_num,
310     session_upload dm_traffic_byte,
311     session_download dm_traffic_byte,
312     month_upload dm_traffic_byte,
313     month_download dm_traffic_byte,
314
315     FOREIGN KEY (fk_session_log) REFERENCES tb_sessions_log (pk_session_log)
316 );
317
318 CREATE TABLE tb_parameters
319 (
320     pk_parameter dm_id PRIMARY KEY,
321     name dm_parameter_name UNIQUE
322 );
323
324 CREATE TABLE tb_params_log
325 (
326     pk_param_log dm_id PRIMARY KEY,
327     fk_user dm_id,
328     fk_parameter dm_id,
329     event_time dm_moment,
330     from_val dm_char_value,
331     to_val dm_char_value,
332     comment dm_service_comment,
333
334     FOREIGN KEY (fk_user) REFERENCES tb_users (pk_user),
335     FOREIGN KEY (fk_parameter) REFERENCES tb_parameters (pk_parameter)
336 );
337
338
339 /*
340  *****************************************************************************
341  * -= Создание ИНДЕКСОВ =-
342  *****************************************************************************
343  */
344
345
346
347 /*
348  *****************************************************************************
349  * -= Создание ГЕНЕРАТОРОВ =-
350  *****************************************************************************
351  */
352
353 CREATE  GENERATOR gn_pk_admin;
354 SET     GENERATOR gn_pk_admin           TO 0;
355 CREATE  GENERATOR gn_pk_tariff;
356 SET     GENERATOR gn_pk_tariff          TO 0;
357 CREATE  GENERATOR gn_pk_tariff_param;
358 SET     GENERATOR gn_pk_tariff_param    TO 0;
359 CREATE  GENERATOR gn_pk_corporation;
360 SET     GENERATOR gn_pk_corporation     TO 0;
361 CREATE  GENERATOR gn_pk_user;
362 SET     GENERATOR gn_pk_user            TO 0;
363 CREATE  GENERATOR gn_pk_detail_stat;
364 SET     GENERATOR gn_pk_detail_stat     TO 0;
365 CREATE  GENERATOR gn_pk_service;
366 SET     GENERATOR gn_pk_service         TO 0;
367 CREATE  GENERATOR gn_pk_user_service;
368 SET     GENERATOR gn_pk_user_service    TO 0;
369 CREATE  GENERATOR gn_pk_message;
370 SET     GENERATOR gn_pk_message         TO 0;
371 CREATE  GENERATOR gn_pk_stat;
372 SET     GENERATOR gn_pk_stat            TO 0;
373 CREATE  GENERATOR gn_pk_stat_traffic;
374 SET     GENERATOR gn_pk_stat_traffic    TO 0;
375 CREATE  GENERATOR gn_pk_user_data;
376 SET     GENERATOR gn_pk_user_data       TO 0;
377 CREATE  GENERATOR gn_pk_allowed_ip;
378 SET     GENERATOR gn_pk_allowed_ip      TO 0;
379 CREATE  GENERATOR gn_pk_session;
380 SET     GENERATOR gn_pk_session         TO 0;
381 CREATE  GENERATOR gn_pk_session_log;
382 SET     GENERATOR gn_pk_session_log     TO 0;
383 CREATE  GENERATOR gn_pk_session_data;
384 SET     GENERATOR gn_pk_session_data    TO 0;
385 CREATE  GENERATOR gn_pk_parameter;
386 SET     GENERATOR gn_pk_parameter       TO 0;
387 CREATE  GENERATOR gn_pk_param_log;
388 SET     GENERATOR gn_pk_param_log       TO 0;
389
390
391 /*
392  *****************************************************************************
393  * -= Создание ТРИГГЕРОВ =-
394  *****************************************************************************
395  */
396
397 SET TERM !! ;
398 CREATE TRIGGER tr_admin_bi FOR tb_admins
399 ACTIVE BEFORE INSERT POSITION 0
400 AS
401 BEGIN
402     IF (new.pk_admin IS NULL)
403     THEN new.pk_admin = GEN_ID(gn_pk_admin, 1);
404 END !!
405 SET TERM ; !!
406
407 set term !! ;
408 create trigger tr_tariff_param_bi for tb_tariffs_params active
409 before insert position 0
410 as
411 begin
412     if (new.pk_tariff_param is null)
413     then new.pk_tariff_param = gen_id(gn_pk_tariff_param, 1);
414 end !!
415 set term ; !!
416
417 set term !! ;
418 create trigger tr_corporation_bi for tb_corporations active
419 before insert position 0
420 as
421 begin
422     if (new.pk_corporation is null)
423     then new.pk_corporation = gen_id(gn_pk_corporation, 1);
424 end !!
425 set term ; !!
426
427 set term !! ;
428 create trigger tr_detail_stat_bi for tb_detail_stats active
429 before insert position 0
430 as
431 begin
432     if (new.pk_detail_stat is null)
433     then new.pk_detail_stat = gen_id(gn_pk_detail_stat, 1);
434 end !!
435 set term ; !!
436
437 set term !! ;
438 create trigger tr_service_bi for tb_services active
439 before insert position 0
440 as
441 begin
442     if (new.pk_service is null)
443     then new.pk_service = gen_id(gn_pk_service, 1);
444 end !!
445 set term ; !!
446
447 set term !! ;
448 create trigger tr_user_service_bi for tb_users_services active
449 before insert position 0
450 as
451 begin
452     if (new.pk_user_service is null)
453     then new.pk_user_service = gen_id(gn_pk_user_service, 1);
454 end !!
455 set term ; !!
456
457 set term !! ;
458 create trigger tr_stat_traffic_bi for tb_stats_traffic active
459 before insert position 0
460 as
461 begin
462     if (new.pk_stat_traffic is null)
463     then new.pk_stat_traffic = gen_id(gn_pk_stat_traffic, 1);
464 end !!
465 set term ; !!
466
467 set term !! ;
468 create trigger tr_user_data_bi for tb_users_data active
469 before insert position 0
470 as
471 begin
472     if (new.pk_user_data is null)
473     then new.pk_user_data = gen_id(gn_pk_user_data, 1);
474 end !!
475 set term ; !!
476
477 set term !! ;
478 create trigger tr_allowed_ip_bi for tb_allowed_ip active
479 before insert position 0
480 as
481 begin
482     if (new.pk_allowed_ip is null)
483     then new.pk_allowed_ip = gen_id(gn_pk_allowed_ip, 1);
484 end !!
485 set term ; !!
486
487 set term !! ;
488 create trigger tr_session_data_bi for tb_sessions_data active
489 before insert position 0
490 as
491 begin
492     if (new.pk_session_data is null)
493     then new.pk_session_data = gen_id(gn_pk_session_data, 1);
494 end !!
495 set term ; !!
496
497 set term !! ;
498 create trigger tr_parameter_bi for tb_parameters active
499 before insert position 0
500 as
501 begin
502     if (new.pk_parameter is null)
503     then new.pk_parameter = gen_id(gn_pk_parameter, 1);
504 end !!
505 set term ; !!
506
507 set term !! ;
508 create trigger tr_param_log_bi for tb_params_log active
509 before insert position 0
510 as
511 begin
512     if (new.pk_param_log is null)
513     then new.pk_param_log = gen_id(gn_pk_param_log, 1);
514 end !!
515 set term ; !!
516
517 /*
518  *****************************************************************************
519  * -= Создание stored procedure =-
520  *****************************************************************************
521  */
522
523 /*
524  * Add a message returning it's ID
525  */
526 set term !! ;
527 create procedure sp_add_message(pk_message integer, login varchar(32), ver integer, msg_type integer, last_send_time integer, creation_time integer, show_time integer, repeat integer, repeat_period integer, msg_text varchar(256))
528 returns(res integer)
529 as  
530 begin
531     if (:pk_message is null) then
532     begin
533         pk_message = gen_id(gn_pk_message, 1);
534         insert into tb_messages values (:pk_message,
535                                         (select pk_user from tb_users where name = :login),
536                                         :ver,
537                                         :msg_type,
538                                         :last_send_time,
539                                         :creation_time, 
540                                         :show_time,
541                                         :repeat,
542                                         :repeat_period,
543                                         :msg_text);
544     end
545     else
546     begin
547         update tb_messages set fk_user = (select pk_user from tb_users where name = :login),
548                                ver = :ver,
549                                msg_type = :msg_type,
550                                last_send_time = :last_send_time,
551                                creation_time = :creation_time,
552                                show_time = :show_time,
553                                repeat = :repeat_period,
554                                repeat_period = :repeat_period,
555                                msg_text = :msg_text
556                            where pk_message = :pk_message;
557     end
558     res = :pk_message;
559 end !!
560 set term ; !!
561
562 set term !! ;
563 create procedure sp_delete_service(name varchar(32))
564 as
565 declare variable pk_service integer;
566 begin
567     select pk_service from tb_services where name = :name into pk_service;
568     if (pk_service is  not null) then
569     begin
570         delete from tb_users_services where fk_service = :pk_service;
571         delete from tb_services where pk_service = :pk_service;
572     end
573 end !!
574 set term ; !!
575
576 set term !! ;
577 create procedure sp_add_tariff(name varchar(32), dirs integer)
578 as
579 declare variable pk_tariff integer;
580 begin
581     pk_tariff = gen_id(gn_pk_tariff, 1);
582     insert into tb_tariffs (pk_tariff, name, fee, free, passive_cost, traff_type) values (:pk_tariff, :name, 0, 0, 0, 0);
583     while (dirs > 0) do
584     begin
585         insert into tb_tariffs_params (fk_tariff, dir_num, price_day_a, 
586                                         price_day_b, price_night_a, price_night_b, 
587                                         threshold, time_day_begins, time_day_ends)
588                     values (:pk_tariff, :dirs - 1, 0, 0, 0, 0, 0, '0:0', '0:0');
589         dirs = dirs - 1;
590     end
591 end !!
592 set term ; !!
593
594 set term !! ;
595 create procedure sp_delete_tariff(name varchar(32))
596 as
597 declare variable pk_tariff integer;
598 begin
599     select pk_tariff from tb_tariffs where name = :name into pk_tariff;
600     if (pk_tariff is not null) then
601     begin
602         delete from tb_tariffs_params where fk_tariff = :pk_tariff;
603         delete from tb_tariffs where pk_tariff = :pk_tariff;
604     end
605 end !!
606 set term ; !!
607
608 set term !! ;
609 create procedure sp_add_user(name varchar(32), dirs integer)
610 as
611 declare variable pk_user integer;
612 declare variable pk_stat integer;
613 begin
614     pk_user = gen_id(gn_pk_user, 1);
615     insert into tb_users(pk_user, fk_tariff, fk_tariff_change, fk_corporation, address, always_online, credit, credit_expire, disabled, disabled_detail_stat, email, grp, note, passive, passwd, phone, name, real_name) values (:pk_user, NULL, NULL, NULL, '', 0, 0, 'now', 0, 0, '', '_', '', 0, '', '', :name, '');
616     pk_stat = gen_id(gn_pk_stat, 1);
617     insert into tb_stats values (:pk_stat, :pk_user, 0, 0, 'now', 0, 'now', 0, 'now');
618     while (dirs > 0) do
619     begin
620         insert into tb_stats_traffic (fk_stat, dir_num, upload, download) values (:pk_stat, :dirs - 1, 0, 0);
621         dirs = dirs - 1;
622     end
623 end!!
624 set term ; !!
625
626 set term !! ;
627 create procedure sp_delete_user(name varchar(32))
628 as
629 declare variable pk_user integer;
630 begin
631     select pk_user from tb_users where name = :name into pk_user;
632     if (pk_user is not null) then
633     begin
634         delete from tb_users_services where fk_user = :pk_user;
635         delete from tb_params_log where fk_user = :pk_user;
636         delete from tb_detail_stats where fk_user = :pk_user;
637         delete from tb_stats_traffic where fk_stat in (select pk_stat from tb_stats where fk_user = :pk_user);
638         delete from tb_stats where fk_user = :pk_user;
639         delete from tb_sessions_data where fk_session_log in (select pk_session_log from tb_sessions_log where fk_user = :pk_user);
640         delete from tb_sessions_log where fk_user = :pk_user;
641         delete from tb_allowed_ip where fk_user = :pk_user;
642         delete from tb_users_data where fk_user = :pk_user;
643         delete from tb_messages where fk_user = :pk_user;
644         delete from tb_users where pk_user = :pk_user;
645     end
646 end !!
647 set term ; !!
648
649 set term !! ;
650 create procedure sp_append_session_log(name varchar(32), event_time timestamp, event_type char(1), ip integer)
651 returns(pk_session_log integer)
652 as
653 begin
654     pk_session_log = gen_id(gn_pk_session_log, 1);
655     insert into tb_sessions_log (pk_session_log, fk_user, event_time, event_type, ip) values (:pk_session_log, (select pk_user from tb_users where name = :name), :event_time, :event_type, :ip);
656 end !!
657 set term ; !!
658
659 set term !! ;
660 create procedure sp_add_stat(name varchar(32), cash numeric(10,6), free_mb numeric(10,6), last_activity_time timestamp, last_cash_add numeric(10,6), last_cash_add_time timestamp, passive_time integer, stats_date date)
661 returns(pk_stat integer)
662 as
663 begin
664     pk_stat = gen_id(gn_pk_stat, 1);
665     insert into tb_stats (pk_stat, fk_user, cash, free_mb, last_activity_time, last_cash_add, last_cash_add_time, passive_time, stats_date) values (:pk_stat, (select pk_user from tb_users where name = :name), :cash, :free_mb, :last_activity_time, :last_cash_add, :last_cash_add_time, :passive_time, :stats_date);
666 end !!
667 set term ; !!
668
669 /*
670  *****************************************************************************
671  * -= Создание администратора =-
672  *****************************************************************************
673  */
674
675 insert into tb_admins values(0, 'admin', 'geahonjehjfofnhammefahbbbfbmpkmkmmefahbbbfbmpkmkmmefahbbbfbmpkmk', 1, 1, 1, 1, 1, 1, 1, 1, 1);
676
677 /* EOF */