require 'lib/id_map'

class User < IDMap
  def initialize(unique=nil)
    if not unique.nil?
      super("Users", unique, "uniquename")
    else
      super("", nil)
    end
  end

  def puzzles
    db = SQLWrapper.new
    sql = "select * from Puzzles where creator = #{@id} order by created desc"
    return db.rows(sql).map { |row| Puzzle.new.from_row(row) }
  end

  def self.create(unique, _alias)
    db = SQLWrapper.new
    begin
      db.insert('Users', {
        "alias" => db.quote(_alias),
        "uniquename" => db.quote(unique)
      })
      user = User.new
      user.id = db.last_id

      db.close
      return user
    rescue
      user = User.new(unique)
      return user
    end
  end
end
