from django.db import models

class StorycraftGame(models.Model):
    id = models.IntegerField(primary_key=True)
    round_mode = models.IntegerField()
    game_length = models.IntegerField()
    line_length = models.IntegerField()
    random_method = models.IntegerField()
    lines_per_turn = models.IntegerField()
    status = models.CharField()
    owner_nick = models.CharField()
    owner_userhost = models.CharField()
    start_time = models.DateTimeField()
    end_time = models.DateTimeField()

    class Meta:
        db_table = 'storycraft_game'
        ordering = ['id']
        managed = False

    def __unicode__(self):
        """Return a terse summary of the vital game info."""

        return '#{0:d} - created on {1:s} by {2:s}, {3:s}'.format(self.id, self.start_time, self.owner_nick, self.status)

    def is_completed(self):
        """Return if this game is completed."""

        return self.status == 'COMPLETED' and self.end_time

class StorycraftPlayer(models.Model):
    id = models.IntegerField(primary_key=True)
    game = models.ForeignKey(StorycraftGame)
    nick = models.CharField()
    userhost = models.CharField()

    class Meta:
        db_table = 'storycraft_player'
        ordering = ['id']
        managed = False

    def __unicode__(self):
        """Return the nick!user@host."""

        return '{0:s}!{1:s}'.format(self.nick, self.userhost)

class StorycraftLine(models.Model):
    id = models.IntegerField(primary_key=True)
    game = models.ForeignKey(StorycraftGame)
    player = models.ForeignKey(StorycraftPlayer)
    line = models.TextField()
    time = models.DateTimeField()

    class Meta:
        db_table = 'storycraft_line'
        ordering = ['id']
        managed = False

    def __unicode__(self):
        """Just return the line."""

        return '{0:s}'.format(self.line)

# vi:tabstop=4:expandtab:autoindent