root / pykota / trunk / initscripts / postgresql / pykota-postgresql.sql @ 1240

Revision 1240, 5.9 kB (checked in by uid67467, 20 years ago)

Should be ok now.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1--
2-- PyKota - Print Quotas for CUPS and LPRng
3--
4-- (c) 2003 Jerome Alet <alet@librelogiciel.com>
5-- This program is free software; you can redistribute it and/or modify
6-- it under the terms of the GNU General Public License as published by
7-- the Free Software Foundation; either version 2 of the License, or
8-- (at your option) any later version.
9--
10-- This program is distributed in the hope that it will be useful,
11-- but WITHOUT ANY WARRANTY; without even the implied warranty of
12-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13-- GNU General Public License for more details.
14--
15-- You should have received a copy of the GNU General Public License
16-- along with this program; if not, write to the Free Software
17-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
18--
19-- $Id$
20--
21-- $Log$
22-- Revision 1.7  2003/12/27 16:49:25  uid67467
23-- Should be ok now.
24--
25-- Revision 1.6  2003/11/23 19:01:36  jalet
26-- Job price added to history
27--
28-- Revision 1.5  2003/11/21 14:28:45  jalet
29-- More complete job history.
30--
31-- Revision 1.4  2003/07/16 21:53:07  jalet
32-- Really big modifications wrt new configuration file's location and content.
33--
34-- Revision 1.3  2003/07/09 20:17:07  jalet
35-- Email field added to PostgreSQL schema
36--
37-- Revision 1.2  2003/06/10 16:37:54  jalet
38-- Deletion of the second user which is not needed anymore.
39-- Added a debug configuration field in /etc/pykota.conf
40-- All queries can now be sent to the logger in debug mode, this will
41-- greatly help improve performance when time for this will come.
42--
43-- Revision 1.1  2003/06/05 07:12:31  jalet
44-- Reorganization of directories
45--
46--
47--
48
49--
50-- PyKota Database creation script for PostgreSQL
51--
52-- Launch this as PostgreSQL administrator with \i
53--
54
55
56--
57-- Create the print quota database
58--
59CREATE DATABASE pykota;
60
61--
62-- Create the print quota database users
63--
64CREATE USER pykotaadmin;
65CREATE USER pykotauser;
66
67--
68-- Now connect to the new database
69--
70\connect pykota
71
72--
73-- Create the users table
74--
75CREATE TABLE users(id SERIAL PRIMARY KEY NOT NULL,
76                   username TEXT UNIQUE NOT NULL,
77                   email TEXT, 
78                   balance FLOAT DEFAULT 0.0,
79                   lifetimepaid FLOAT DEFAULT 0.0,
80                   limitby TEXT DEFAULT 'quota');
81                   
82--
83-- Create the groups table
84--
85CREATE TABLE groups(id SERIAL PRIMARY KEY NOT NULL,
86                    groupname TEXT UNIQUE NOT NULL,
87                    limitby TEXT DEFAULT 'quota');
88                   
89--
90-- Create the printers table
91--
92CREATE TABLE printers(id SERIAL PRIMARY KEY NOT NULL,
93                      printername TEXT UNIQUE NOT NULL,
94                      priceperpage FLOAT DEFAULT 0.0,
95                      priceperjob FLOAT DEFAULT 0.0);
96                   
97--
98-- Create the print quota table for users
99--
100CREATE TABLE userpquota(id SERIAL PRIMARY KEY NOT NULL,
101                        userid INT4 REFERENCES users(id),
102                        printerid INT4 REFERENCES printers(id),
103                        lifepagecounter INT4 DEFAULT 0,
104                        pagecounter INT4 DEFAULT 0,
105                        softlimit INT4,
106                        hardlimit INT4,
107                        datelimit TIMESTAMP);
108CREATE UNIQUE INDEX userpquota_up_id_ix ON userpquota (userid, printerid);
109                       
110--
111-- Create the job history table
112--
113CREATE TABLE jobhistory(id SERIAL PRIMARY KEY NOT NULL,
114                        jobid TEXT,
115                        userid INT4,
116                        printerid INT4,
117                        pagecounter INT4 DEFAULT 0,
118                        jobsize INT4,
119                        jobprice FLOAT,
120                        action TEXT,
121                        filename TEXT,
122                        title TEXT,
123                        copies INT4,
124                        options TEXT,
125                        jobdate TIMESTAMP DEFAULT now(),
126                        CONSTRAINT checkUserPQuota FOREIGN KEY (userid, printerid) REFERENCES userpquota(userid, printerid));
127CREATE INDEX jobhistory_p_id_ix ON jobhistory (printerid);
128CREATE INDEX jobhistory_pd_id_ix ON jobhistory (printerid, jobdate);
129                       
130--
131-- Create the print quota table for groups
132--
133CREATE TABLE grouppquota(id SERIAL PRIMARY KEY NOT NULL,
134                         groupid INT4 REFERENCES groups(id),
135                         printerid INT4 REFERENCES printers(id),
136                         softlimit INT4,
137                         hardlimit INT4,
138                         datelimit TIMESTAMP);
139CREATE UNIQUE INDEX grouppquota_up_id_ix ON grouppquota (groupid, printerid);
140                       
141--                         
142-- Create the groups/members relationship
143--
144CREATE TABLE groupsmembers(groupid INT4 REFERENCES groups(id),
145                           userid INT4 REFERENCES users(id),
146                           PRIMARY KEY (groupid, userid));
147                           
148--                         
149-- Create the printer groups relationship
150--
151CREATE TABLE printergroupsmembers(groupid INT4 REFERENCES printers(id),
152                           printerid INT4 REFERENCES printers(id),
153                           PRIMARY KEY (groupid, printerid));
154
155--                       
156-- Set some ACLs                       
157--
158REVOKE ALL ON users, groups, printers, userpquota, grouppquota, groupsmembers, printergroupsmembers, jobhistory FROM public;                       
159REVOKE ALL ON users_id_seq, groups_id_seq, printers_id_seq, userpquota_id_seq, grouppquota_id_seq, jobhistory_id_seq FROM public;
160
161GRANT SELECT, INSERT, UPDATE, DELETE, REFERENCES ON users, groups, printers, userpquota, grouppquota, groupsmembers, printergroupsmembers, jobhistory TO pykotaadmin;
162GRANT SELECT, UPDATE ON users_id_seq, groups_id_seq, printers_id_seq, userpquota_id_seq, grouppquota_id_seq, jobhistory_id_seq TO pykotaadmin;
163GRANT SELECT ON users, groups, printers, userpquota, grouppquota, groupsmembers, printergroupsmembers, jobhistory TO pykotauser;
Note: See TracBrowser for help on using the browser.