~ubuntu-branches/debian/squeeze/erlang/squeeze

« back to all changes in this revision

Viewing changes to lib/mnesia/examples/company.erl

  • Committer: Bazaar Package Importer
  • Author(s): Erlang Packagers, Sergei Golovan
  • Date: 2006-12-03 17:07:44 UTC
  • mfrom: (2.1.11 feisty)
  • Revision ID: james.westby@ubuntu.com-20061203170744-rghjwupacqlzs6kv
Tags: 1:11.b.2-4
[ Sergei Golovan ]
Fixed erlang-base and erlang-base-hipe prerm scripts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
-module(company).
19
19
 
20
20
-compile(export_all).
21
 
-compile({parse_transform,mnemosyne_lc}).
22
21
 
23
22
%0
24
23
 
 
24
-include_lib("stdlib/include/qlc.hrl").
25
25
-include("company.hrl").
26
26
 
27
27
init() ->
61
61
 
62
62
%1
63
63
 
64
 
%15
65
 
-argtype({females, employee}).
66
 
females(E) :-
67
 
    E <- table(employee),
68
 
    E.sex = female.
69
 
%15
70
 
 
71
64
%2
72
65
females() ->
73
66
    F = fun() ->
74
 
                Q = query [E.name || E <- table(employee),
75
 
                                     E.sex = female] end,
76
 
                mnemosyne:eval(Q)
77
 
        end,
 
67
                Q = qlc:q([E#employee.name || E <- mnesia:table(employee),
 
68
                                              E#employee.sex == female]),
 
69
                qlc:e(Q)
 
70
        end,
78
71
    mnesia:transaction(F).
79
72
%2
80
 
 
81
73
%20
82
74
all_females() ->
83
75
    F = fun() ->
87
79
    mnesia:transaction(F).
88
80
%20
89
81
 
90
 
%16
91
 
females2() ->
92
 
    F = fun() ->
93
 
                Q = query [E.name || E <- rule(females) ] end,
94
 
                mnemosyne:eval(Q)
95
 
        end,
96
 
    mnesia:transaction(F).
97
 
%16
98
 
 
99
82
g() -> l.
100
83
 
101
84
%3
102
85
female_bosses() ->
103
 
    Q = query [{E.name, Boss.name} ||
104
 
                  E <- table(employee),
105
 
                  E.sex = female,
106
 
                  Boss <- table(employee),
107
 
                  Atdep <- table(at_dep),
108
 
                  Mgr <- table(manager),
109
 
                  Atdep.emp = E.emp_no,
110
 
                  Mgr.emp = Boss.emp_no,
111
 
                  Atdep.dept_id = Mgr.dept]
112
 
         end,
113
 
     mnesia:transaction(fun() -> mnemosyne:eval(Q) end).
 
86
    Q = qlc:q( [{E#employee.name, Boss#employee.name} ||
 
87
                   E <- mnesia:table(employee),
 
88
                   Boss <- mnesia:table(employee),
 
89
                   Atdep <- mnesia:table(at_dep),
 
90
                   Mgr <- mnesia:table(manager),
 
91
                   E#employee.sex == female,
 
92
                   Atdep#at_dep.emp == E#employee.emp_no,
 
93
                   Mgr#manager.emp == Boss#employee.emp_no,
 
94
                   Atdep#at_dep.dept_id == Mgr#manager.dept]
 
95
              ),
 
96
    mnesia:transaction(fun() -> qlc:e(Q) end).
114
97
%3
115
98
 
116
 
 
117
 
                    
118
99
%4
119
100
raise_females(Amount) ->
120
101
    F = fun() ->
121
 
                Q = query [E || E <- table(employee),
122
 
                                E.sex = female] end,
123
 
                Fs = mnemosyne:eval(Q),
 
102
                Q = qlc:q([E || E <- mnesia:table(employee),
 
103
                                E#employee.sex == female]),
 
104
                Fs = qlc:e(Q),
124
105
                over_write(Fs, Amount)
125
106
        end,
126
107
    mnesia:transaction(F).
157
138
        end,
158
139
    mnesia:transaction(F).
159
140
%6
160
 
 
161
 
 
162
 
%7
163
 
f1() ->
164
 
    Q = query 
165
 
         [E || E <- table(employee), 
166
 
          E.sex = female]
167
 
    end, 
168
 
    F = fun() -> mnemosyne:eval(Q) end,
169
 
    mnesia:transaction(F).
170
 
%7
171
 
 
172
 
%8
173
 
f2() ->
174
 
    WildPat = mnesia:table_info(employee, wild_pattern),
175
 
    Pat = WildPat#employee{sex = female},
176
 
    F = fun() -> mnesia:match_object(Pat) end,
177
 
    mnesia:transaction(F).
178
 
%8
179
 
 
180
141
                       
181
142
%9
182
143
get_emps(Salary, Dep) ->
183
 
    Q = query 
184
 
          [E || E <- table(employee),
185
 
                At <- table(at_dep),
186
 
                E.salary > Salary,
187
 
                E.emp_no = At.emp,
188
 
                At.dept_id = Dep]
189
 
        end,
190
 
    F = fun() -> mnemosyne:eval(Q) end,
 
144
    Q = qlc:q( 
 
145
          [E || E <- mnesia:table(employee),
 
146
                At <- mnesia:table(at_dep),
 
147
                E#employee.salary > Salary,
 
148
                E#employee.emp_no == At#at_dep.emp,
 
149
                At#at_dep.dept_id == Dep]
 
150
         ),
 
151
    F = fun() -> qlc:e(Q) end,
191
152
    mnesia:transaction(F).
192
153
%9
193
154
%10
230
191
        D#at_dep.dept_id == Dep -> true;
231
192
        true -> search_deps(Name, Tail, Dep)
232
193
    end;
233
 
search_deps(Name, Tail, Dep) ->
 
194
search_deps(_Name, _Tail, _Dep) ->
234
195
    false.
235
196
 
236
197
%10
294
255
%13
295
256
remove_proj(ProjName) ->
296
257
    F = fun() ->
297
 
                Ip = mnemosyne:eval(query [X || X <- table(in_proj),
298
 
                                                X.proj_name = ProjName]
299
 
                                    end),
 
258
                Ip = qlc:e(qlc:q([X || X <- mnesia:table(in_proj),
 
259
                                       X#in_proj.proj_name == ProjName]
 
260
                                )),
300
261
                mnesia:delete({project, ProjName}),
301
262
                del_in_projs(Ip)
302
263
        end,
308
269
del_in_projs([]) ->
309
270
    done.
310
271
%13
311
 
                           
 
272
        
312
273
%14
313
274
sync() ->
314
275
    case mnesia:wait_for_tables(tabs(), 10000) of