File: myddas_top_level.ypp

package info (click to toggle)
yap 5.1.1-3
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 16,124 kB
  • ctags: 14,650
  • sloc: ansic: 122,796; perl: 22,545; sh: 3,768; java: 1,277; makefile: 1,191; xml: 739; tcl: 624; lisp: 142; awk: 9
file content (113 lines) | stat: -rwxr-xr-x 3,166 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/*************************************************************************
*									 *
*	 YAP Prolog 							 *
*									 *
*	Yap Prolog was developed at NCCUP - Universidade do Porto	 *
*									 *
* Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-1997	 *
*									 *
**************************************************************************
*									 *
* File:		myddas_top_level.yap	                                 *
* Last rev:							         *
* mods:									 *
* comments:	MYDDAS Top Level predicates		                 *
*									 *
*************************************************************************/

#ifdef MYDDAS_TOP_LEVEL

:- module(myddas_top_level,[
			    db_top_level/5,
			    db_datalog_select/3
			   ]).

:- use_module(myddas_mysql,[
			    db_my_result_set/1
			    ]).

:- use_module(charsio,[
		       read_from_chars/2
		      ]).

:- use_module(terms,[
		     term_variables/2
		    ]).

:- use_module(myddas_util_predicates,[
				      '$make_list_of_args'/4,
				      '$prolog2sql'/3,
				      '$write_or_not'/1,
				      '$lenght'/2
				     ]).
				     
db_top_level(mysql,Connection,_,_,_):-
	%'$error_checks'(db_open(mysql,Connection,Host/Db,User,Password)),
	get_value(Connection,Con),
	Con \= [],!,
	c_db_connection_type(Con,mysql),
	db_my_result_set(Mode),
	c_db_tl_top_level_mysql(Con,Mode).

db_top_level(datalog,Connection,_,_,_):-
	%'$error_checks'(db_open(mysql,Connection,Host/Db,User,Password)),
	get_value(Connection,Con),
	Con \= [],!,
	c_db_connection_type(Con,mysql),
	Prompt = ' datalog> ',
	nl,
	'$top_level_datalog_cicle'(Connection,Prompt).
% 	c_db_tl_readline(Prompt,Line),
% 	name(Line,CharsLine),
% 	read_from_chars(CharsLine,Query),
% 	term_variables(Query,VarList),
% 	db_datalog_select(Connection,VarList,Query).

'$top_level_datalog_cicle'(Connection,Prompt):-
	c_db_tl_readline(Prompt,Line),
	name(Line,CharsLine),
	catch(read_from_chars(CharsLine,Query),_,'$top_level_datalog_cicle'(Connection,Prompt)),
	!,'$top_level_datalog'(Connection,Prompt,Query).


'$top_level_datalog'(_,_,halt):-!.
'$top_level_datalog'(Connection,Prompt,Query):-
	term_variables(Query,[]),!,
	Query =..[_|Args],
	db_datalog_select(Connection,Args,Query),
	'$top_level_datalog_cicle'(Connection,Prompt).
'$top_level_datalog'(Connection,Prompt,Query):-
	term_variables(Query,VarList),
	db_datalog_select(Connection,VarList,Query),
	!,'$top_level_datalog_cicle'(Connection,Prompt).
	
db_datalog_select(Connection,LA,DbGoal):-
	
	'$lenght'(LA,Arity),
	functor(ViewName,viewname,Arity),
	% build arg list for viewname/Arity
	'$make_list_of_args'(1,Arity,ViewName,LA),
	
	'$prolog2sql'(ViewName,DbGoal,SQL),
	
	get_value(Connection,Con),
	c_db_connection_type(Con,ConType),
	'$write_or_not'(SQL),
	%( ConType == mysql ->
	db_my_result_set(Mode),
	c_db_my_query(SQL,ResultSet,Con,Mode),
	c_db_my_table_write(ResultSet).
	



	

% db_top_level(mysqlConnection,Host/Db,User,Password):-
% 	%'$error_checks'(db_open(mysql,Connection,Host/Db,User,Password)),
% 	c_db_my_connect(Host,User,Password,Db,Con),
% 	set_value(Connection,Con),
% 	db_my_result_set(Mode),
% 	c_db_top_level(Con,Mode).

#endif MYDDAS_TOP_LEVEL