Bivio::Biz::Model::RealmFileLock
# Copyright (c) 2008 bivio Software, Inc. All Rights Reserved. # $Id$ package Bivio::Biz::Model::RealmFileLock; use strict; use Bivio::Base 'Biz.PropertyModel'; b_use('IO.Config')->register(my $_CFG = { enable => 1, }); sub create { my($self, $values) = @_; _assert_enabled($self); $values->{modified_date_time} ||= $self->use('Type.DateTime')->now; $values->{realm_id} ||= $self->req('auth_id'); $values->{user_id} ||= $self->req('auth_user_id'); return shift->SUPER::create(@_); } sub handle_config { my(undef, $cfg) = @_; $_CFG = $cfg; return; } sub if_enabled { return shift->if_then_else($_CFG->{enable}, @_); } sub internal_initialize { my($self) = @_; return $self->merge_initialize_info($self->SUPER::internal_initialize, { version => 1, table_name => 'realm_file_lock_t', columns => { realm_file_lock_id => ['PrimaryId', 'PRIMARY_KEY'], realm_file_id => ['RealmFile.realm_file_id', 'NOT_NULL'], realm_id => ['RealmOwner.realm_id', 'NOT_NULL'], # Don't cascade when User.user_id is deleted user_id => ['PrimaryId', 'NOT_NULL'], modified_date_time => ['DateTime', 'NOT_NULL'], comment => ['Text', 'NONE'], }, other => [ [qw(realm_file_id RealmFile.realm_file_id)], [qw(realm_id RealmOwner.realm_id)], [qw(user_id User.user_id)], ], auth_id => 'realm_id', }); } sub is_locked { my($self) = @_; return 0 unless $self->if_enabled; my($proto, $model, $model_prefix) = shift->internal_get_target(@_); return $proto->boolean( $model->get($model_prefix . 'modified_date_time') && !defined($model->get($model_prefix . 'comment')), ); } sub _assert_enabled { my($self) = @_; return $self->if_enabled($self, sub {b_die('RealmFileLock not enabled')}); } 1;