antville/db/postgre.sql

284 lines
7.8 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--
-- The Antville Project
-- http://code.google.com/p/antville
--
-- Copyright 20012014 by the Workers of Antville.
--
-- Licensed under the Apache License, Version 2.0 (the License'');
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an AS IS'' BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
create user antville password 'antville';
-- This returns an error in PostgreSql database
alter user antville admin true;
-- These return errors in H2 database
create database antville owner antville;
\connect antville;
create schema antville authorization antville;
create table antville.account (
-- "user" is a reserved keyword in PostgreSql
id int4 primary key,
name varchar(255),
metadata text,
email varchar(255),
status varchar(20),
created timestamp,
modified timestamp
);
create index account_name_idx on antville.account (name);
create index account_email_idx on antville.account (email);
create index account_status_idx on antville.account (status);
create index account_created_idx on antville.account (created);
create index account_modified_idx on antville.account (modified);
create table antville.choice (
id int4 primary key,
poll_id int4,
title varchar(255),
created timestamp,
modified timestamp
);
create index poll_choice_idx on antville.choice (poll_id);
create table antville.content (
id int4 primary key,
prototype varchar(20),
name varchar(255),
site_id int4,
story_id int4,
parent_id int4,
parent_type varchar(20),
metadata text,
status varchar(20),
mode varchar(20),
comment_mode varchar(20),
requests int4,
created timestamp,
creator_id int4,
modified timestamp,
modifier_id int4
);
create index content_prototype_idx on antville.content (prototype);
create index content_site_idx on antville.content (site_id);
create index content_story_idx on antville.content (story_id);
create index content_parent_idx on antville.content (parent_id, parent_type);
create index content_status_idx on antville.content (status);
create index content_mode_idx on antville.content (mode);
create index content_requests_idx on antville.content (requests);
create index content_created_idx on antville.content (created);
create index content_creator_idx on antville.content (creator_id);
create table antville.file (
id int4 primary key,
prototype varchar(20),
name varchar(255),
site_id int4,
parent_id int4,
parent_type varchar(20),
metadata text,
requests int4,
created timestamp,
creator_id int4,
modified timestamp,
modifier_id int4
);
create index file_name_idx on antville.file (name);
create index file_site_idx on antville.file (site_id);
create index file_requests_idx on antville.file (requests);
create index file_created_idx on antville.file (created);
create index file_creator_idx on antville.file (creator_id);
create table antville.image (
id int4 primary key,
name varchar(255),
prototype varchar(20),
parent_id int4,
parent_type varchar(20),
metadata text,
created timestamp,
creator_id int4,
modified timestamp,
modifier_id int4
);
create index image_name_idx on antville.image (name);
create index image_prototype_idx on antville.image (prototype);
create index image_parent_idx on antville.image (parent_id, parent_type);
create index image_created_idx on antville.image (created);
create index image_creator_idx on antville.image (creator_id);
create table antville.layout (
id int4 primary key,
site_id int4,
metadata text,
mode varchar(20),
created timestamp,
creator_id int4,
modified timestamp,
modifier_id int4
);
create index layout_site_idx on antville.layout (site_id);
create sequence antville.log_id_seq;
create table antville.log (
id int4 not null default nextval('antville.log_id_seq'),
context_id int4,
context_type varchar(20),
referrer text,
action varchar(255),
created timestamp,
creator_id int4
);
-- This returns an error in H2 database
alter sequence antville.log_id_seq owned by antville.log.id;
create index log_context_idx on antville.log (context_id, context_type);
create index log_created_idx on antville.log (created);
create table antville.membership (
id int4 primary key,
name varchar(255),
site_id int4,
role varchar(20),
created timestamp,
creator_id int4,
modified timestamp,
modifier_id int4
);
create index membership_name_idx on antville.membership (name);
create index membership_site_idx on antville.membership (site_id);
create index membership_role_idx on antville.membership (role);
create index membership_creator_idx on antville.membership (creator_id);
--!helma <% #metadata %>
create table antville.metadata (
id int4 primary key,
parent_id int4,
parent_type varchar,
name varchar(255),
value text,
type varchar(255)
);
create index metadata_parent_idx on antville.metadata (parent_type, parent_id);
create index metadata_name_idx on antville.metadata (name);
create index metadata_value_idx on antville.metadata using hash (value);
--!helma <% #end_of_metadata %>
create table antville.poll (
id int4 primary key,
site_id int4,
question text,
status varchar(20),
closed timestamp,
created timestamp,
creator_id int4,
modified timestamp,
modifier_id int4
);
create index poll_site_idx on antville.poll (site_id);
create index poll_status_idx on antville.poll (status);
create index poll_created_idx on antville.poll (created);
create index poll_creator_idx on antville.poll (creator_id);
create table antville.site (
id int4 primary key,
name varchar(255),
layout_id int4,
metadata text,
status varchar(20),
mode varchar(20),
created timestamp,
creator_id int4,
modified timestamp,
modifier_id int4
);
create index site_name_idx on antville.site (name);
create index site_status_idx on antville.site (status);
create index site_created_idx on antville.site (created);
create index site_creator_idx on antville.site (creator_id);
create table antville.skin (
id int4 primary key,
name varchar(255),
prototype varchar(30),
source text,
layout_id int4,
created timestamp,
creator_id int4,
modified timestamp,
modifier_id int4
);
create index skin_layout_index on antville.skin (layout_id);
create index skin_created_index on antville.site (created);
create table antville.tag (
id int4 primary key,
name varchar(255),
site_id int4,
type varchar(20)
);
create index tag_name_idx on antville.tag (name);
create index tag_site_idx on antville.tag (site_id);
create index tag_type_idx on antville.tag (type);
create table antville.tag_hub (
id int4 primary key,
tag_id int4,
tagged_id int4,
tagged_type varchar(20)
);
create index tagged_idx on antville.tag_hub (tag_id, tagged_id, tagged_type);
create table antville.vote (
id int4 primary key,
poll_id int4,
choice_id int4,
creator_name varchar(255),
created timestamp,
creator_id int4,
modified timestamp
);
create index vote_poll_idx on antville.vote (poll_id, choice_id);
insert into antville.layout (id, site_id, mode) values ('1', '1', 'default');
insert into antville.site (id, name, layout_id, status, mode)
values ('1', 'www', '1', 'trusted', 'public');
grant select, insert, update, delete on antville.choice, antville.content,
antville.file, antville.image, antville.layout, antville.log,
antville.metadata, antville.membership, antville.poll, antville.site, antville.skin,
antville.tag, antville.tag_hub, antville.account, antville.vote to antville;
-- This returns an error in H2 database
grant usage on antville.log_id_seq to antville;