Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- BaseDO := Object clone do(
- tableName := method(name, getSlot("self") setSlot("_tableName", name))
- primaryKey := method(name, getSlot("self") setSlot("_primaryKeyName", name))
- init := method(
- o := getSlot("self")
- o _sqlFieldNames := Map clone
- o _changed := List clone
- )
- changed := method(getSlot("self") _changed)
- fieldSetter := method(v,
- name := call activated fieldName
- self setSlot(name, getSlot("v"))
- self _changed append(name)
- self
- )
- getSlot("fieldSetter") newSlot("fieldName")
- addField := method(name, dbName,
- o := getSlot("self")
- o setSlot(name, nil)
- o setSlot("set" .. name asCapitalized,
- getSlot("fieldSetter") clone setFieldName(name))
- o _sqlFieldNames atPut(name, if (dbName isNil, name, dbName))
- )
- updateSQL := method(
- o := getSlot("self")
- if (o changed size == 0, return nil)
- sql := ("UPDATE " .. o _tableName .. " SET ") asMutable
- first := false
- o changed foreach(n,
- if (first, sql appendSeq(","))
- sql appendSeq(n .. "='" .. o getSlot(n) .. "'")
- first := true
- )
- sql appendSeq(" WHERE " .. o _primaryKeyName .. "='" .. \
- o getSlot(o _primaryKeyName) .. "'")
- sql println
- )
- )
- ExampleDO := BaseDO clone do (
- init := method(
- resend
- tableName("example")
- primaryKey("id")
- self addField("id")
- self addField("first")
- self addField("last")
- )
- fullName := method(first .. " " .. last)
- )
Add Comment
Please, Sign In to add comment