schema draft - wxwang93/kikkr GitHub Wiki

users

col data_type detail
id integer not null, primary key
username string not null, indexed, unique
pw_digest string not null
sess_tok string not null, indexed, unique
first_n string not null
last_n string not null
created@ datetime not null
updated@ datetime not null
  • A User has many photos. A User has many albums. A User has many comments.

photos

col data_type detail
title string not null
id integer not null, primary key
user_id integer not null, indexed, f-key
desc. text
created@ datetime not null
updated@ datetime not null
  • A photo belongs to a User. A photo has many comments. A photo has many tags.

albums

col data_type detail
id integer not null, primary key
title string not null
user_id integer not null, indexed, f-key
descript text
created@ datetime not null
updated@ datetime not null
  • An Album belongs to a User. An Album has many Photos.

comments

col data_type detail
id integer not null, primary key
user_id integer not null, indexed, f-key
photo_id integer not null, indexed, f-key
body text not null
created@ datetime not null
updated@ datetime not null
  • A Comment belongs to a User. A Comment belongs to a Photo.

joins_photos_albums

col data_type detail
album_id integer not null, f-key
photo_id integer not null, indexed, f-key

Associations Draft

class User

has_many :photos,
class_name: :Photo,
foreign_key: :user_id

has_many :albums,
class_name: :Album,
foreign_key: :user_id

has_many :comments,
class_name: :User,
foreign_key: :user_id
end

class Photo

belongs_to :user,
class_name: :User,
foreign_key: :user_id

belongs_to :album,
class_name: :Album,
foreign_key: :album_id

has_many :comments,
class_name: :Comment,
foreign_key: :photo_id

end

class Album

belongs_to :user,
class_name: :User,
foreign_key: :user_id

has_many :photos,
class_name: :Photo,
foreign_key: :album_id
end

class Comment

belongs_to :user,
class_name: :User,
foreign_key: :user_id

belongs_to :photo,
class_name: :Photo,
foreign_key: :photo_id
end

⚠️ **GitHub.com Fallback** ⚠️