malkomalko
7/5/2010 - 1:06 PM

gistfile1.txt

sys: require("sys")

require.paths.unshift "/Users/jonahfox/src/mongoose"
mongoose: require('mongoose').Mongoose

mongoose.model 'User', {	
	properties: ['nick', 'pass', 'email', 'updated_at']

	indexes: [[{ nick: 1 }, {unique: true}]]
	setters: {}
	getters: {}
	methods: {
    save: (callback) ->
       @updated_at: +new Date()
       @__super__ callback
    validate: (callback) ->
      @errors: []
      @errors.push "bad nick" unless @nick and 3 < @nick.length < 16
      @errors.push "bad password" if @pass and @pass.length < 4
      @errors.push "bad email" unless @email and 5 < @email.length && @email.indexOf("@") > 0
      User.find({nick: @nick}).first (user) =>
        @errors.push "nick taken" if user
        callback()
	}
	static: {
		authorize: (nick, pass, callback) -> 
		  @find({nick: nick, pass: pass}).first(callback)
	}
}

db: mongoose.connect 'mongodb://localhost/testdb'
User: db.model 'User'

users: [
  { nick: "jonah", pass: "1234", email: "jonah@parkerfox.co.uk" }
  { nick: "bobby", pass: "1234", email: "jonah@parkerfox.co.uk" }
  { nick: "!!!!!", pass: "1234", email: "jonah@parkerfox.co.uk" }
  { nick: "!", pass: "1234", email: "jonah@parkerfox.co.uk" }
  { pass: "1234", email: "jonah@parkerfox.co.uk" }
  { nick: "!!3!!", pass: "1234", email: "parkerfox.co.uk" }
  { nick: "jonah", pass: "1234", email: "jonah@parkerfox.co.uk" }
]

for user in users
  u: new User(user, true)
  u.validate ->
    if u.errors.length == 0
      u.save()
      sys.puts 'Saved!'
    else
      sys.puts u.errors.join(" ")