PRAGMA foreign_keys = ON;
+CREATE TABLE room (
+ id INTEGER PRIMARY KEY,
+ name TEXT,
+ created TIMESTAMP DEFAULT NOW
+);
+
CREATE TABLE account (
id INTEGER PRIMARY KEY,
email TEXT,
username TEXT UNIQUE,
password TEXT NOT NULL,
- status TEXT DEFAULT 'active'
+ status TEXT DEFAULT 'active',
+ current_room INTEGER REFERENCES room(id)
);
CREATE TABLE message (
id INTEGER PRIMARY KEY,
- posted TIMESTAMP,
+ posted TIMESTAMP DEFAULT NOW,
author INTEGER REFERENCES account(id),
+ room INTEGER REFERENCES room(id),
content TEXT
);
default_value: 'active'
is_nullable: 1
+=head2 current_room
+
+ data_type: 'integer'
+ is_foreign_key: 1
+ is_nullable: 1
+
=cut
__PACKAGE__->add_columns(
{ data_type => "text", is_nullable => 0 },
"status",
{ data_type => "text", default_value => "active", is_nullable => 1 },
+ "current_room",
+ { data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->add_unique_constraint("username_unique", ["username"]);
=head1 RELATIONS
+=head2 current_room
+
+Type: belongs_to
+
+Related object: L<Chatty::Schema::Result::Room>
+
+=cut
+
+__PACKAGE__->belongs_to(
+ "current_room",
+ "Chatty::Schema::Result::Room",
+ { id => "current_room" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "CASCADE",
+ on_update => "CASCADE",
+ },
+);
+
=head2 messages
Type: has_many
);
-# Created by DBIx::Class::Schema::Loader v0.07010 @ 2011-10-13 16:46:39
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:pPJdUbHgHvUo4FxblDaJ2g
+# Created by DBIx::Class::Schema::Loader v0.07010 @ 2011-10-13 18:47:53
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:l1E3sAYHA5mK6RiNszOTzA
# You can replace this text with custom code or comments, and it will be preserved on regeneration
=head2 posted
data_type: 'timestamp'
+ default_value: NOW
is_nullable: 1
=head2 author
is_foreign_key: 1
is_nullable: 1
+=head2 room
+
+ data_type: 'integer'
+ is_foreign_key: 1
+ is_nullable: 1
+
=head2 content
data_type: 'text'
"id",
{ data_type => "integer", is_auto_increment => 1, is_nullable => 0 },
"posted",
- { data_type => "timestamp", is_nullable => 1 },
+ { data_type => "timestamp", default_value => \"NOW", is_nullable => 1 },
"author",
{ data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
+ "room",
+ { data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
"content",
{ data_type => "text", is_nullable => 1 },
);
=head1 RELATIONS
+=head2 room
+
+Type: belongs_to
+
+Related object: L<Chatty::Schema::Result::Room>
+
+=cut
+
+__PACKAGE__->belongs_to(
+ "room",
+ "Chatty::Schema::Result::Room",
+ { id => "room" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "CASCADE",
+ on_update => "CASCADE",
+ },
+);
+
=head2 author
Type: belongs_to
);
-# Created by DBIx::Class::Schema::Loader v0.07010 @ 2011-10-13 16:46:39
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:dgMXiWuIhmCQeExkpcxorA
+# Created by DBIx::Class::Schema::Loader v0.07010 @ 2011-10-13 18:47:53
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:q1cq2bWftQPoo8huOftzMQ
# You can replace this text with custom code or comments, and it will be preserved on regeneration
--- /dev/null
+package Chatty::Schema::Result::Room;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY THE FIRST PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use Moose;
+use MooseX::NonMoose;
+use namespace::autoclean;
+extends 'DBIx::Class::Core';
+
+__PACKAGE__->load_components("InflateColumn::DateTime", "TimeStamp");
+
+=head1 NAME
+
+Chatty::Schema::Result::Room
+
+=cut
+
+__PACKAGE__->table("room");
+
+=head1 ACCESSORS
+
+=head2 id
+
+ data_type: 'integer'
+ is_auto_increment: 1
+ is_nullable: 0
+
+=head2 name
+
+ data_type: 'text'
+ is_nullable: 1
+
+=head2 created
+
+ data_type: 'timestamp'
+ default_value: NOW
+ is_nullable: 1
+
+=cut
+
+__PACKAGE__->add_columns(
+ "id",
+ { data_type => "integer", is_auto_increment => 1, is_nullable => 0 },
+ "name",
+ { data_type => "text", is_nullable => 1 },
+ "created",
+ { data_type => "timestamp", default_value => \"NOW", is_nullable => 1 },
+);
+__PACKAGE__->set_primary_key("id");
+
+=head1 RELATIONS
+
+=head2 accounts
+
+Type: has_many
+
+Related object: L<Chatty::Schema::Result::Account>
+
+=cut
+
+__PACKAGE__->has_many(
+ "accounts",
+ "Chatty::Schema::Result::Account",
+ { "foreign.current_room" => "self.id" },
+ { cascade_copy => 0, cascade_delete => 0 },
+);
+
+=head2 messages
+
+Type: has_many
+
+Related object: L<Chatty::Schema::Result::Message>
+
+=cut
+
+__PACKAGE__->has_many(
+ "messages",
+ "Chatty::Schema::Result::Message",
+ { "foreign.room" => "self.id" },
+ { cascade_copy => 0, cascade_delete => 0 },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07010 @ 2011-10-13 18:47:53
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:2QSf3vZfv8xVbUKtsKsvDg
+
+
+# You can replace this text with custom code or comments, and it will be preserved on regeneration
+__PACKAGE__->meta->make_immutable;
+1;