Sha256: c5067a994567bbc9aa6eace969c7bfde4e7136fee87081c130af6a8b848223c4

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

class Ponytail.Models.Table extends Backbone.Model
  defaults:
    name: "new_table"
    columns: []
    isDrop: false
    isCreated: false

  initialize: (attrs, options) ->
    @beforeName = attrs.name || ""

  isCreated: ->
    @.get("isCreated") == true

  isDrop: ->
    @.get("isDrop") == true

  isRename: ->
    @.beforeName != @.get("name")

  addColumn: (column) ->
    columns = @.get("columns")
    columns.push(column)
    @.set({columns: columns})
    @.trigger("change")

  getCommands: ->
    if (@.isCreated() && @.isDrop())
      []
    else if (@.isCreated() && !@.isDrop())
      columns = (column for column in @.get("columns") when !column.isRemoved())
      [new Ponytail.Models.CreateTableCommand(@.get("name"), columns)]
    else if (!@.isCreated() && @.isDrop())
      [new Ponytail.Models.DropTableCommand(@.beforeName)]
    else
      commands = []
      if @.isRename()
        commands.push(new Ponytail.Models.RenameTableCommand(@beforeName, @.get("name")))

      for column in @.get("columns")
        commands.push(column.getCommands())

      _.compact(_.flatten(commands))

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ponytail-0.5.0 app/assets/javascripts/ponytail/models/table.coffee
ponytail-0.4.0 app/assets/javascripts/ponytail/models/table.coffee