schema updates
authorMike Rylander <mrylander@gmail.com>
Tue, 2 Apr 2013 23:13:38 +0000 (19:13 -0400)
committerMike Rylander <mrylander@gmail.com>
Tue, 2 Apr 2013 23:13:38 +0000 (19:13 -0400)
Signed-off-by: Mike Rylander <mrylander@gmail.com>

conf/fm_IDL.xml
src/sql/003.schema.actors.sql
src/sql/004.schema.repository.sql

index 3bd915e..021cd2f 100644 (file)
@@ -370,6 +370,190 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
             </actions>
         </permacrud>
        </class>
+
+       <class id="dss" controller="sharestuff.cstore sharestuff.pcrud" oils_obj:fieldmapper="depository::source_system" oils_persist:tablename="depository.source_system" oils_persist:field_safe="true" reporter:label="Versioned Source System">
+               <fields oils_persist:primary="name">
+                       <field name="name" reporter:datatype="id" />
+                       <field name="packages" oils_persist:virtual="true" reporter:datatype="link" />
+               </fields>
+               <links>
+                       <link field="packages" reltype="has_many" key="" map="package" class="dpcm"/>
+               </links>
+        <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+            <actions>
+                <create permission="CREATE_VOTPI" global_required="true"/>
+                <retrieve/>
+                <update permission="UPDATE_VOTPI" global_required="true"/>
+                <delete permission="DELETE_VOTPI" global_required="true"/>
+            </actions>
+        </permacrud>
+       </class>
+
+       <class id="dp" controller="sharestuff.cstore sharestuff.pcrud" oils_obj:fieldmapper="depository::package" oils_persist:tablename="depository.package" oils_persist:field_safe="true" reporter:label="Sharable Package">
+               <fields oils_persist:primary="id" oils_persist:sequence="depository.package_id_seq">
+                       <field name="id" reporter:datatype="id" />
+                       <field name="author" reporter:datatype="link"/>
+                       <field name="pub" reporter:datatype="bool"/>
+                       <field name="title" reporter:datatype="text"/>
+                       <field name="pkg_version" reporter:datatype="text"/>
+                       <field name="description" reporter:datatype="text"/>
+                       <field name="created" reporter:datatype="timestamptz"/>
+                       <field name="image" reporter:datatype="text"/>
+                       <field name="systems" oils_persist:virtual="true" reporter:datatype="link" />
+               </fields>
+               <links>
+                       <link field="author" reltype="has_a" key="id" map="" class="au"/>
+                       <link field="source" reltype="has_a" key="id" map="" class="dss"/>
+                       <link field="systems" reltype="has_many" key="" map="compat_system" class="dpcm"/>
+               </links>
+        <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+            <actions>
+                <create permission="CREATE_PKG" global_required="true"/>
+                <retrieve/>
+                <update permission="UPDATE_PKG" global_required="true"/>
+                <delete permission="DELETE_PKG" global_required="true"/>
+            </actions>
+        </permacrud>
+       </class>
+
+
+       <class id="dpcm" controller="sharestuff.cstore sharestuff.pcrud" oils_obj:fieldmapper="depository::package_compat_map" oils_persist:tablename="depository.package_compat_map" oils_persist:field_safe="true" reporter:label="Sharable Package Compatability">
+               <fields oils_persist:primary="id" oils_persist:sequence="depository.package_compat_map_id_seq">
+                       <field name="id" reporter:datatype="id" />
+                       <field name="package" reporter:datatype="link"/>
+                       <field name="compat_system" reporter:datatype="link"/>
+               </fields>
+               <links>
+                       <link field="package" reltype="has_a" key="id" map="" class="dp"/>
+                       <link field="compat_system" reltype="has_a" key="name" map="" class="dss"/>
+               </links>
+        <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+            <actions>
+                <create permission="CREATE_PKG" global_required="true"/>
+                <retrieve/>
+                <update permission="UPDATE_PKG" global_required="true"/>
+                <delete permission="DELETE_PKG" global_required="true"/>
+            </actions>
+        </permacrud>
+       </class>
+
+       <class id="dr" controller="sharestuff.cstore sharestuff.pcrud" oils_obj:fieldmapper="depository::rating" oils_persist:tablename="depository.rating" oils_persist:field_safe="true" reporter:label="Package Rating Entry">
+               <fields oils_persist:primary="id" oils_persist:sequence="depository.rating_id_seq">
+                       <field name="id" reporter:datatype="id" />
+                       <field name="usr" reporter:datatype="link"/>
+                       <field name="package" reporter:datatype="link"/>
+                       <field name="rating" reporter:datatype="int"/>
+                       <field name="created" reporter:datatype="timestamptz"/>
+                       <field name="comments" reporter:datatype="text"/>
+               </fields>
+               <links>
+                       <link field="package" reltype="has_a" key="id" map="" class="dp"/>
+                       <link field="usr" reltype="has_a" key="id" map="" class="au"/>
+               </links>
+        <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+            <actions>
+                <create permission="RATE" global_required="true"/>
+                <retrieve/>
+                <delete permission="KILLRATE" global_required="true"/>
+            </actions>
+        </permacrud>
+       </class>
+
+
+       <class id="dif" controller="sharestuff.cstore sharestuff.pcrud" oils_obj:fieldmapper="depository::item_field" oils_persist:tablename="depository.item_field" oils_persist:field_safe="true" reporter:label="Item Field">
+               <fields oils_persist:primary="id" oils_persist:sequence="depository.item_field_id_seq">
+                       <field name="id" reporter:datatype="id" />
+                       <field name="item" reporter:datatype="link"/>
+                       <field name="container" reporter:datatype="link"/>
+                       <field name="property" reporter:datatype="text"/>
+                       <field name="value" reporter:datatype="text"/>
+                       <field name="multival" reporter:datatype="bool"/>
+               </fields>
+               <links>
+                       <link field="item" reltype="has_a" key="id" map="" class="di"/>
+                       <link field="container" reltype="has_a" key="id" map="" class="dif"/>
+               </links>
+        <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+            <actions>
+                <retrieve/>
+            </actions>
+        </permacrud>
+       </class>
+
+
+
+       <class id="di" controller="sharestuff.cstore sharestuff.pcrud" oils_obj:fieldmapper="depository::item" oils_persist:tablename="depository.item" oils_persist:field_safe="true" reporter:label="Sharable Package Item">
+               <fields oils_persist:primary="id" oils_persist:sequence="depository.item_id_seq">
+                       <field name="id" reporter:datatype="id" />
+                       <field name="package" reporter:datatype="link"/>
+                       <field name="otype" reporter:datatype="link"/>
+                       <field name="data" reporter:datatype="text"/>
+               </fields>
+               <links>
+                       <link field="package" reltype="has_a" key="id" map="" class="dp"/>
+                       <link field="otype" reltype="has_a" key="id" map="" class="dvot"/>
+               </links>
+        <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+            <actions>
+                <retrieve/>
+            </actions>
+        </permacrud>
+       </class>
+
+       <class id="dvotpi" controller="sharestuff.cstore sharestuff.pcrud" oils_obj:fieldmapper="depository::versioned_object_type_property_ignore" oils_persist:tablename="depository.versioned_object_type_property_ignore" oils_persist:field_safe="true" reporter:label="Versioned Object Type Ignorable Property">
+               <fields oils_persist:primary="id" oils_persist:sequence="depository.versioned_object_type_property_ignore_id_seq">
+                       <field name="id" reporter:datatype="id" />
+                       <field name="otype" reporter:datatype="link"/>
+                       <field name="property" reporter:datatype="text"/>
+               </fields>
+               <links>
+                       <link field="otype" reltype="has_a" key="id" map="" class="dvot"/>
+               </links>
+        <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+            <actions>
+                <create permission="CREATE_VOTPI" global_required="true"/>
+                <retrieve/>
+                <update permission="UPDATE_VOTPI" global_required="true"/>
+                <delete permission="DELETE_VOTPI" global_required="true"/>
+            </actions>
+        </permacrud>
+       </class>
+
+       <class id="dvot" controller="sharestuff.cstore sharestuff.pcrud" oils_obj:fieldmapper="depository::versioned_object_type" oils_persist:tablename="depository.versioned_object_type" oils_persist:field_safe="true" reporter:label="Versioned Object Type">
+               <fields oils_persist:primary="id" oils_persist:sequence="depository.versioned_object_type_id_seq">
+                       <field name="id" reporter:datatype="id" />
+                       <field name="base_type" reporter:datatype="link"/>
+                       <field name="system" reporter:datatype="text"/>
+               </fields>
+               <links>
+                       <link field="base_type" reltype="has_a" key="id" map="" class="dbot"/>
+               </links>
+        <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+            <actions>
+                <create permission="CREATE_VOT" global_required="true"/>
+                <retrieve/>
+                <update permission="UPDATE_VOT" global_required="true"/>
+                <delete permission="DELETE_VOT" global_required="true"/>
+            </actions>
+        </permacrud>
+       </class>
+
+       <class id="dbot" controller="sharestuff.cstore sharestuff.pcrud" oils_obj:fieldmapper="depository::base_object_type" oils_persist:tablename="depository.base_object_type" oils_persist:field_safe="true" reporter:label="Base Object Type">
+               <fields oils_persist:primary="id" oils_persist:sequence="depository.base_object_type_id_seq">
+                       <field name="id" reporter:datatype="id" />
+                       <field name="hint" reporter:datatype="text"/>
+                       <field name="label" reporter:datatype="text" oils_persist:i18n="true"/>
+               </fields>
+               <links/>
+        <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+            <actions>
+                <create permission="CREATE_BOT" global_required="true"/>
+                <retrieve/>
+                <update permission="UPDATE_BOT" global_required="true"/>
+                <delete permission="DELETE_BOT" global_required="true"/>
+            </actions>
+        </permacrud>
+       </class>
 </IDL>
 
 <!--
index aa9efe4..9dcfa76 100644 (file)
@@ -209,69 +209,4 @@ CREATE TABLE actor.org_unit_setting (
 );
 CREATE INDEX actor_org_unit_setting_usr_idx ON actor.org_unit_setting (org_unit);
 
-CREATE TABLE actor.usr_activity (
-    id          BIGSERIAL   PRIMARY KEY,
-    usr         INT         REFERENCES actor.usr (id) ON DELETE SET NULL,
-    etype       INT         NOT NULL REFERENCES config.usr_activity_type (id),
-    event_time  TIMESTAMPTZ NOT NULL DEFAULT NOW()
-);
-
--- remove transient activity entries on insert of new entries
-CREATE OR REPLACE FUNCTION actor.usr_activity_transient_trg () RETURNS TRIGGER AS $$
-BEGIN
-    DELETE FROM actor.usr_activity act USING config.usr_activity_type atype
-        WHERE atype.transient AND
-            NEW.etype = atype.id AND
-            act.etype = atype.id AND
-            act.usr = NEW.usr;
-    RETURN NEW;
-END;
-$$ LANGUAGE PLPGSQL;
-
-CREATE TRIGGER remove_transient_usr_activity
-    BEFORE INSERT ON actor.usr_activity
-    FOR EACH ROW EXECUTE PROCEDURE actor.usr_activity_transient_trg();
-
--- given a set of activity criteria, find the most approprate activity type
-CREATE OR REPLACE FUNCTION actor.usr_activity_get_type (
-        ewho TEXT,
-        ewhat TEXT,
-        ehow TEXT
-    ) RETURNS SETOF config.usr_activity_type AS $$
-SELECT * FROM config.usr_activity_type
-    WHERE
-        enabled AND
-        (ewho  IS NULL OR ewho  = $1) AND
-        (ewhat IS NULL OR ewhat = $2) AND
-        (ehow  IS NULL OR ehow  = $3)
-    ORDER BY
-        -- BOOL comparisons sort false to true
-        COALESCE(ewho, '')  != COALESCE($1, ''),
-        COALESCE(ewhat,'')  != COALESCE($2, ''),
-        COALESCE(ehow, '')  != COALESCE($3, '')
-    LIMIT 1;
-$$ LANGUAGE SQL;
-
--- given a set of activity criteria, finds the best
--- activity type and inserts the activity entry
-CREATE OR REPLACE FUNCTION actor.insert_usr_activity (
-        usr INT,
-        ewho TEXT,
-        ewhat TEXT,
-        ehow TEXT
-    ) RETURNS SETOF actor.usr_activity AS $$
-DECLARE
-    new_row actor.usr_activity%ROWTYPE;
-BEGIN
-    SELECT id INTO new_row.etype FROM actor.usr_activity_get_type(ewho, ewhat, ehow);
-    IF FOUND THEN
-        new_row.usr := usr;
-        INSERT INTO actor.usr_activity (usr, etype)
-            VALUES (usr, new_row.etype)
-            RETURNING * INTO new_row;
-        RETURN NEXT new_row;
-    END IF;
-END;
-$$ LANGUAGE plpgsql;
-
 COMMIT;
index c2a9331..257180c 100644 (file)
@@ -30,7 +30,6 @@ VALUES ('Evergreen-2.1')
 CREATE TABLE depository.package (
     id          SERIAL  PRIMARY KEY,
     author      INT     NOT NULL REFERENCES actor.usr (id),
-    source      TEXT    NOT NULL REFERENCES depository.source_system (name),
     pub         BOOL    NOT NULL DEFAULT TRUE,
     title       TEXT    NOT NULL,
     pkg_version TEXT    NOT NULL,
@@ -91,6 +90,12 @@ CREATE TABLE depository.base_object_type (
     label   TEXT    NOT NULL,
     hint    TEXT    NOT NULL
 );
+INSERT INTO depository.base_object_type (label, hint) VALUES ('Subscription Pattern and Caption', 'scap');
+INSERT INTO depository.base_object_type (base_type, system) VALUES (CURRVAL(depository.base_object_type_id_seq), 'Evergreen-2.1');
+INSERT INTO depository.base_object_type (base_type, system) VALUES (CURRVAL(depository.base_object_type_id_seq), 'Evergreen-2.2');
+INSERT INTO depository.base_object_type (base_type, system) VALUES (CURRVAL(depository.base_object_type_id_seq), 'Evergreen-2.3');
+INSERT INTO depository.base_object_type (base_type, system) VALUES (CURRVAL(depository.base_object_type_id_seq), 'Evergreen-2.4');
+
 
 CREATE TABLE depository.versioned_object_type (
     id          SERIAL  PRIMARY KEY,
@@ -107,7 +112,7 @@ CREATE TABLE depository.versioned_object_type_property_ignore (
 CREATE TABLE depository.item (
     id          SERIAL  PRIMARY KEY,
     package     INT     NOT NULL REFERENCES depository.package (id),
-    obj_type    INT     NOT NULL REFERENCES depository.versioned_object_type (id),
+    otype       INT     NOT NULL REFERENCES depository.versioned_object_type (id),
     data        TEXT    CHECK (sharestuff.is_json(data))
 );