--- /dev/null
+package Newslash::Model::Globjs;
+use Newslash::Model::Base -base;
+
+use Data::Dumper;
+use Mojo::Log;
+
+## WORNING:
+## This is worst legacy from slash. deprecated, and you can use only backword-compatible.
+
+sub getGlobjidCreate {
+ my($self, $name, $target_id, $options) = @_;
+ my $db;
+ my $globjid = $db->getGlobjidFromTargetIfExists($name, $target_id);
+ return $globjid if $globjid;
+ return $self->createGlobjid($name, $target_id);
+}
+
+sub getGlobjTypes {
+ my ($self) = @_;
+
+ my $dbh = $self->connect_db({AutoCommit => 0,});
+ my $sql = "SELECT * from globj_types";
+ my $sth = $dbh->prepare($sql);
+ $sth->execute();
+ my $rs = $sth->fetchall_hashref('gtid');
+ for my $gtid (keys %$rs) {
+ $rs->{$rs->{$gtid}} = $gtid;
+ }
+ $sth->finish;
+ $dbh->disconnect;
+ return $result;
+}
+
+sub getGlobjidFromTargetIfExists {
+ my ($self, $name, $target_id) = @_;
+ return 0 if !$name || !$target_id;
+
+ my $globjtypes = $self->getGlobjTypes();
+ my $gtid = $globjtypes->{$name};
+ return 0 if !$gtid;
+
+ my $dbh = $self->connect_db({AutoCommit => 0,});
+ my $sql = "SELECT * from globjs WHERE gtid = ? AND target_id = ?";
+ my $sth = $dbh->prepare($sql);
+ $sth->execute($gtid, $target_id);
+ my $rs = $sth->fetchall_arrayref({});
+
+ if (@$rs == 0) {
+ return 0;
+ }
+ return $rs->[0]->{globijd};
+}
+
+
+sub createGlobjid {
+ my ($self, $name, $target_id) = @_;
+ my $globjtypes = $self->getGlobjTypes;
+ my $gtid = $globjtypes->{$name};
+ return 0 if !$gtid;
+
+ my $dbh = $self->connect_db();
+ my $sql = "INSERT INTO globjs (gtid, target_id) VALUES (?, ?)";
+ my $result = $dbh->do($sql, undef, $gtid, $target_id);
+ if (!$result) {
+ return $self->getGlobjidFromTargetIfExists($name, $target_id);
+ }
+ my $globjid = $dbh->last_insert_id(undef, undef, undef, undef);
+ return $globjid;
+}
+
+
+1;