1: <?php
2:
3: namespace Yajra\Oci8\Schema;
4:
5: use Closure;
6: use Illuminate\Database\Connection;
7: use Illuminate\Database\Schema\Builder;
8:
9: class OracleBuilder extends Builder
10: {
11: 12: 13:
14: public $helper;
15:
16: 17: 18:
19: public $comment;
20:
21: 22: 23:
24: public function __construct(Connection $connection)
25: {
26: parent::__construct($connection);
27: $this->helper = new OracleAutoIncrementHelper($connection);
28: $this->comment = new Comment($connection);
29: }
30:
31: 32: 33: 34: 35: 36: 37:
38: public function create($table, Closure $callback)
39: {
40: $blueprint = $this->createBlueprint($table);
41:
42: $blueprint->create();
43:
44: $callback($blueprint);
45:
46: $this->build($blueprint);
47:
48: $this->comment->setComments($blueprint);
49:
50: $this->helper->createAutoIncrementObjects($blueprint, $table);
51: }
52:
53: 54: 55: 56: 57: 58: 59:
60: protected function createBlueprint($table, Closure $callback = null)
61: {
62: $blueprint = new OracleBlueprint($table, $callback);
63: $blueprint->setTablePrefix($this->connection->getTablePrefix());
64:
65: return $blueprint;
66: }
67:
68: 69: 70: 71: 72: 73: 74:
75: public function table($table, Closure $callback)
76: {
77: $blueprint = $this->createBlueprint($table);
78:
79: $callback($blueprint);
80:
81: foreach ($blueprint->getCommands() as $command) {
82: if ($command->get('name') == 'drop') {
83: $this->helper->dropAutoIncrementObjects($table);
84: }
85: }
86:
87: $this->build($blueprint);
88:
89: $this->comment->setComments($blueprint);
90: }
91:
92: 93: 94: 95: 96: 97:
98: public function drop($table)
99: {
100: $this->helper->dropAutoIncrementObjects($table);
101: parent::drop($table);
102: }
103:
104: 105: 106: 107: 108: 109:
110: public function dropIfExists($table)
111: {
112: $this->helper->dropAutoIncrementObjects($table);
113: parent::dropIfExists($table);
114: }
115:
116: 117: 118: 119: 120: 121:
122: public function hasTable($table)
123: {
124:
125: $grammar = $this->grammar;
126: $sql = $grammar->compileTableExists();
127:
128: $database = $this->connection->getConfig('username');
129: $table = $this->connection->getTablePrefix() . $table;
130:
131: return count($this->connection->select($sql, [$database, $table])) > 0;
132: }
133:
134: 135: 136: 137: 138: 139:
140: public function getColumnListing($table)
141: {
142: $database = $this->connection->getConfig('username');
143: $table = $this->connection->getTablePrefix() . $table;
144:
145: $grammar = $this->grammar;
146: $results = $this->connection->select($grammar->compileColumnExists($database, $table));
147:
148: return $this->connection->getPostProcessor()->processColumnListing($results);
149: }
150: }
151: