</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>
<!--
);
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;
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,
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,
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))
);