add some missing auto-deletes if refcount reaches zero
This commit is contained in:
@@ -24,6 +24,22 @@ class Proposal extends Model
|
||||
{
|
||||
use Reportable;
|
||||
|
||||
protected static function boot()
|
||||
{
|
||||
parent::boot();
|
||||
|
||||
static::deleting(function(Proposal $self) {
|
||||
$self->reportsOf()->delete();
|
||||
|
||||
// update refcounts
|
||||
$rev = $self->revision;
|
||||
$rev->decrement('refs');
|
||||
|
||||
// Delete the revision if it has no other refs (manually, to update row refs)
|
||||
if ($rev->refs <= 0) $rev->delete();
|
||||
});
|
||||
}
|
||||
|
||||
/** Authoring user */
|
||||
public function author()
|
||||
{
|
||||
|
||||
@@ -32,6 +32,8 @@ class Revision extends Model
|
||||
static::deleting(function(Revision $self) {
|
||||
// update refcounts
|
||||
$self->rows()->decrement('refs');
|
||||
|
||||
$self->rows()->where('refs', '<=', 0)->delete();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -38,8 +38,15 @@ class Table extends Model
|
||||
parent::boot();
|
||||
|
||||
static::deleting(function(Table $self) {
|
||||
// update refcounts
|
||||
// update revision refcounts
|
||||
$self->revisions()->decrement('refs');
|
||||
|
||||
$self->reportsOf()->delete();
|
||||
|
||||
// delete revisions with zero refs (manually, to properly cascade to rows)
|
||||
foreach ($self->revisions()->where('refs', '<=', 0)->get() as $rev) {
|
||||
$rev->delete();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,15 @@ class TableComment extends Model
|
||||
{
|
||||
use Reportable;
|
||||
|
||||
protected static function boot()
|
||||
{
|
||||
parent::boot();
|
||||
|
||||
static::deleting(function(TableComment $self) {
|
||||
$self->reportsOf()->delete();
|
||||
});
|
||||
}
|
||||
|
||||
/** Context data table */
|
||||
public function table()
|
||||
{
|
||||
|
||||
@@ -58,10 +58,18 @@ class User extends Authenticatable
|
||||
parent::boot();
|
||||
|
||||
static::deleting(function(User $self) {
|
||||
// comments are deleted via cascade
|
||||
|
||||
$self->reportsOf()->delete();
|
||||
|
||||
// manually delete proposals to ensure row refcounts are updated
|
||||
foreach ($self->proposals as $proposal) {
|
||||
$proposal->delete();
|
||||
}
|
||||
|
||||
foreach ($self->tables as $table) {
|
||||
$table->delete();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user