may i ask what the "is" method exactly does? googling for it is a bit hard since "is" is quite commonly used ;)
On 19 Jan., 21:39, Ross Mellgren <dri...@gmail.com> wrote: > I see primaryKeyField in the docs, maybe try .record(obj.primaryKeyField.is) ? > > -Ross > > On Jan 19, 2010, at 3:31 PM, Franz Bettag wrote: > > > trait Stamped[A <: LongKeyedMapper[A]] > > extends SkipLogging with KeyedMetaMapper[Long, A] { > > > self: A with MetaMapper[A] with KeyedMapper[Long, A] => > > > override def afterCreate = (crudLog(_: A, "create")) :: > > super.afterCreate > > > override def afterUpdate = (crudLog(_: A, "update")) :: > > super.afterUpdate > > > override def afterDelete = (crudLog(_: A, "delete")) :: > > super.afterDelete > > > private def crudLog(obj: A, action: String): Unit = { > > if (!self.skipLogging) { > > val log = new ActionLog > > log.action(action).klass(obj.getClass.getName).record > > (obj.primaryKey).save > > // Stamped.scala:54: error: value primaryKey is not a member of A > > } > > } > > > } > > > On 19 Jan., 21:22, David Pollak <feeder.of.the.be...@gmail.com> wrote: > >> You don't need to use structural typing. > > >> Any KeyedMapper has a primaryKey method that returns a Mapped field of the > >> type of the key. To get the primary key field of a given KeyedMapper > >> instance, just call primaryKey. > > >> On Tue, Jan 19, 2010 at 11:55 AM, Ross Mellgren <dri...@gmail.com> wrote: > >>> How about structural typing? > > >>> trait Stamped[A <: LongKeyedMapper[A] with { val id: MappedLongIndex[A] }] > >>> ... > > >>> I haven't tried it, but maybe it will work. > > >>> -Ross > > >>> On Jan 19, 2010, at 2:47 PM, Franz Bettag wrote: > > >>>> On 19 Jan., 19:32, David Pollak <feeder.of.the.be...@gmail.com> wrote: > >>>>>> i am trying to extend my logging trait. The Problem is, i can't say > >>>>>> something like A <: LongKeyedMapper[A] in my trait since ProtoUser > >>>>>> doesn't use IdPK but uses it's own declarations (which look the same > >>>>>> to me). > > >>>>> Why do you need ProtoUser extended with IdPK? Why can't your trait work > >>>>> with LongKeyedMapper? > > >>>> The code relies on having a .id method on the passed object. The Three > >>>> Traits are below. It works fine with anything having IdPK. At the > >>>> moment i have this code copied into my User singleton which is exactly > >>>> what i want to avoid. > > >>>> I don't know how i would dynamify the use of the .id method. In > >>>> ActionLog and the Stamped trait. > > >>>> trait Stamped[A <: LongKeyedMapper[A] with IdPK] > >>>> extends SkipLogging with KeyedMetaMapper[Long, A] { > > >>>> self: A with MetaMapper[A] with KeyedMapper[Long, A] => > > >>>> override def afterCreate = (crudLog(_: A, "create")) :: > >>>> super.afterCreate > > >>>> override def afterUpdate = (crudLog(_: A, "update")) :: > >>>> super.afterUpdate > > >>>> override def afterDelete = (crudLog(_: A, "delete")) :: > >>>> super.afterDelete > > >>>> private def crudLog(obj: A, action: String): Unit = { > >>>> if (!self.skipLogging) { > >>>> val log = new ActionLog > > >>> log.action(action).klass(obj.getClass.getName).record(obj.id).save > >>>> } > >>>> } > > >>>> } > > >>>> trait SkipLogging { > > >>>> var skipLogging = false > >>>> } > > >>>> trait ActionLogs[A <: Mapper[A] with IdPK] { > > >>>> this: A => > > >>>> def logs: List[ActionLog] = ActionLog.findAll( > >>>> By(ActionLog.klass, this.getClass.getName), > >>>> By(ActionLog.record, this.id) > >>>> ) > > >>>> } > > >>>> -- > >>>> You received this message because you are subscribed to the Google Groups > >>> "Lift" group. > >>>> To post to this group, send email to lift...@googlegroups.com. > >>>> To unsubscribe from this group, send email to > >>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com> > >>> . > >>>> For more options, visit this group at > >>>http://groups.google.com/group/liftweb?hl=en. > > >>> -- > >>> You received this message because you are subscribed to the Google Groups > >>> "Lift" group. > >>> To post to this group, send email to lift...@googlegroups.com. > >>> To unsubscribe from this group, send email to > >>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com> > >>> . > >>> For more options, visit this group at > >>>http://groups.google.com/group/liftweb?hl=en. > > >> -- > >> Lift, the simply functional web frameworkhttp://liftweb.net > >> Beginning Scalahttp://www.apress.com/book/view/1430219890 > >> Follow me:http://twitter.com/dpp > >> Surf the harmonics > > -- > > You received this message because you are subscribed to the Google Groups > > "Lift" group. > > To post to this group, send email to lift...@googlegroups.com. > > To unsubscribe from this group, send email to > > liftweb+unsubscr...@googlegroups.com. > > For more options, visit this group > > athttp://groups.google.com/group/liftweb?hl=en.
-- You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to lift...@googlegroups.com. To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/liftweb?hl=en.