ReservedKeyWordTrait::isReserved()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2
c 1
b 0
f 0
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
cc 2
nc 2
nop 1
crap 2
1
<?php namespace Distilleries\Expendable\Models\Traits;
2
3
use Illuminate\Support\Str;
4
5
trait ReservedKeyWordTrait
6
{
7
    protected $reserves = [
8
        'ACCESS',
9
        'ACCOUNT',
10
        'ACTIVATE',
11
        'ADD',
12
        'ADMIN',
13
        'ADVISE',
14
        'AFTER',
15
        'ALL',
16
        'ALL_ROWS',
17
        'ALLOCATE',
18
        'ALTER',
19
        'ANALYZE',
20
        'AND',
21
        'ANY',
22
        'ARCHIVE',
23
        'ARCHIVELOG',
24
        'ARRAY',
25
        'AS',
26
        'ASC',
27
        'AT',
28
        'AUDIT',
29
        'AUTHENTICATED',
30
        'AUTHORIZATION',
31
        'AUTOEXTEND',
32
        'AUTOMATIC',
33
        'BACKUP',
34
        'BECOME',
35
        'BEFORE',
36
        'BEGIN',
37
        'BETWEEN',
38
        'BFILE',
39
        'BITMAP',
40
        'BLOB',
41
        'BLOCK',
42
        'BODY',
43
        'BY',
44
        'CACHE',
45
        'CACHE_INSTANCES',
46
        'CANCEL',
47
        'CASCADE',
48
        'CAST',
49
        'CFILE',
50
        'CHAINED',
51
        'CHANGE',
52
        'CHAR',
53
        'CHAR_CS',
54
        'CHARACTER',
55
        'CHECK',
56
        'CHECKPOINT',
57
        'CHOOSE',
58
        'CHUNK',
59
        'CLEAR',
60
        'CLOB',
61
        'CLONE',
62
        'CLOSE',
63
        'CLOSE_CACHED_OPEN_CURSORS',
64
        'CLUSTER',
65
        'COALESCE',
66
        'COLUMN',
67
        'COLUMNS',
68
        'COMMENT',
69
        'COMMIT',
70
        'COMMITTED',
71
        'COMPATIBILITY',
72
        'COMPILE',
73
        'COMPLETE',
74
        'COMPOSITE_LIMIT',
75
        'COMPRESS',
76
        'COMPUTE',
77
        'CONNECT',
78
        'CONNECT_TIME',
79
        'CONSTRAINT',
80
        'CONSTRAINTS',
81
        'CONTENTS',
82
        'CONTINUE',
83
        'CONTROLFILE',
84
        'CONVERT',
85
        'COST',
86
        'CPU_PER_CALL',
87
        'CPU_PER_SESSION',
88
        'CREATE',
89
        'CURRENT',
90
        'CURRENT_SCHEMA',
91
        'CURREN_USER',
92
        'CURSOR',
93
        'CYCLE',
94
        'DANGLING',
95
        'DATABASE',
96
        'DATAFILE',
97
        'DATAFILES',
98
        'DATAOBJNO',
99
        'DATE',
100
        'DBA',
101
        'DBHIGH',
102
        'DBLOW',
103
        'DBMAC',
104
        'DEALLOCATE',
105
        'DEBUG',
106
        'DEC',
107
        'DECIMAL',
108
        'DECLARE',
109
        'DEFAULT',
110
        'DEFERRABLE',
111
        'DEFERRED',
112
        'DEGREE',
113
        'DELETE',
114
        'DEREF',
115
        'DESC',
116
        'DIRECTORY',
117
        'DISABLE',
118
        'DISCONNECT',
119
        'DISMOUNT',
120
        'DISTINCT',
121
        'DISTRIBUTED',
122
        'DML',
123
        'DOUBLE',
124
        'DROP',
125
        'DUMP',
126
        'EACH',
127
        'ELSE',
128
        'ENABLE',
129
        'END',
130
        'ENFORCE',
131
        'ENTRY',
132
        'ESCAPE',
133
        'EXCEPT',
134
        'EXCEPTIONS',
135
        'EXCHANGE',
136
        'EXCLUDING',
137
        'EXCLUSIVE',
138
        'EXECUTE',
139
        'EXISTS',
140
        'EXPIRE',
141
        'EXPLAIN',
142
        'EXTENT',
143
        'EXTENTS',
144
        'EXTERNALLY',
145
        'FAILED_LOGIN_ATTEMPTS',
146
        'FALSE',
147
        'FAST',
148
        'FILE',
149
        'FIRST_ROWS',
150
        'FLAGGER',
151
        'FLOAT',
152
        'FLOB',
153
        'FLUSH',
154
        'FOR',
155
        'FORCE',
156
        'FOREIGN',
157
        'FREELIST',
158
        'FREELISTS',
159
        'FROM',
160
        'FULL',
161
        'FUNCTION',
162
        'GLOBAL',
163
        'GLOBALLY',
164
        'GLOBAL_NAME',
165
        'GRANT',
166
        'GROUP',
167
        'GROUPS',
168
        'HASH',
169
        'HASHKEYS',
170
        'HAVING',
171
        'HEADER',
172
        'HEAP',
173
        'IDENTIFIED',
174
        'IDGENERATORS',
175
        'IDLE_TIME',
176
        'IF',
177
        'IMMEDIATE',
178
        'IN',
179
        'INCLUDING',
180
        'INCREMENT',
181
        'INDEX',
182
        'INDEXED',
183
        'INDEXES',
184
        'INDICATOR',
185
        'IND_PARTITION',
186
        'INITIAL',
187
        'INITIALLY',
188
        'INITRANS',
189
        'INSERT',
190
        'INSTANCE',
191
        'INSTANCES',
192
        'INSTEAD',
193
        'INT',
194
        'INTEGER',
195
        'INTERMEDIATE',
196
        'INTERSECT',
197
        'INTO',
198
        'IS',
199
        'ISOLATION',
200
        'ISOLATION_LEVEL',
201
        'KEEP',
202
        'KEY',
203
        'KILL',
204
        'LABEL',
205
        'LAYER',
206
        'LESS',
207
        'LEVEL',
208
        'LIBRARY',
209
        'LIKE',
210
        'LIMIT',
211
        'LINK',
212
        'LIST',
213
        'LOB',
214
        'LOCAL',
215
        'LOCK',
216
        'LOCKED',
217
        'LOG',
218
        'LOGFILE',
219
        'LOGGING',
220
        'LOGICAL_READS_PER_CALL',
221
        'LOGICAL_READS_PER_SESSION',
222
        'LONG',
223
        'MANAGE',
224
        'MASTER',
225
        'MAX',
226
        'MAXARCHLOGS',
227
        'MAXDATAFILES',
228
        'MAXEXTENTS',
229
        'MAXINSTANCES',
230
        'MAXLOGFILES',
231
        'MAXLOGHISTORY',
232
        'MAXLOGMEMBERS',
233
        'MAXSIZE',
234
        'MAXTRANS',
235
        'MAXVALUE',
236
        'MIN',
237
        'MEMBER',
238
        'MINIMUM',
239
        'MINEXTENTS',
240
        'MINUS',
241
        'MINVALUE',
242
        'MLSLABEL',
243
        'MLS_LABEL_FORMAT',
244
        'MODE',
245
        'MODIFY',
246
        'MOUNT',
247
        'MOVE',
248
        'MTS_DISPATCHERS',
249
        'MULTISET',
250
        'NATIONAL',
251
        'NCHAR',
252
        'NCHAR_CS',
253
        'NCLOB',
254
        'NEEDED',
255
        'NESTED',
256
        'NETWORK',
257
        'NEW',
258
        'NEXT',
259
        'NOARCHIVELOG',
260
        'NOAUDIT',
261
        'NOCACHE',
262
        'NOCOMPRESS',
263
        'NOCYCLE',
264
        'NOFORCE',
265
        'NOLOGGING',
266
        'NOMAXVALUE',
267
        'NOMINVALUE',
268
        'NONE',
269
        'NOORDER',
270
        'NOOVERRIDE',
271
        'NOPARALLEL',
272
        'NOPARALLEL',
273
        'NOREVERSE',
274
        'NORMAL',
275
        'NOSORT',
276
        'NOT',
277
        'NOTHING',
278
        'NOWAIT',
279
        'NULL',
280
        'NUMBER',
281
        'NUMERIC',
282
        'NVARCHAR2',
283
        'OBJECT',
284
        'OBJNO',
285
        'OBJNO_REUSE',
286
        'OF',
287
        'OFF',
288
        'OFFLINE',
289
        'OID',
290
        'OIDINDEX',
291
        'OLD',
292
        'ON',
293
        'ONLINE',
294
        'ONLY',
295
        'OPCODE',
296
        'OPEN',
297
        'OPTIMAL',
298
        'OPTIMIZER_GOAL',
299
        'OPTION',
300
        'OR',
301
        'ORDER',
302
        'ORGANIZATION',
303
        'OSLABEL',
304
        'OVERFLOW',
305
        'OWN',
306
        'PACKAGE',
307
        'PARALLEL',
308
        'PARTITION',
309
        'PASSWORD',
310
        'PASSWORD_GRACE_TIME',
311
        'PASSWORD_LIFE_TIME',
312
        'PASSWORD_LOCK_TIME',
313
        'PASSWORD_REUSE_MAX',
314
        'PASSWORD_REUSE_TIME',
315
        'PASSWORD_VERIFY_FUNCTION',
316
        'PCTFREE',
317
        'PCTINCREASE',
318
        'PCTTHRESHOLD',
319
        'PCTUSED',
320
        'PCTVERSION',
321
        'PERCENT',
322
        'PERMANENT',
323
        'PLAN',
324
        'PLSQL_DEBUG',
325
        'POST_TRANSACTION',
326
        'PRECISION',
327
        'PRESERVE',
328
        'PRIMARY',
329
        'PRIOR',
330
        'PRIVATE',
331
        'PRIVATE_SGA',
332
        'PRIVILEGE',
333
        'PRIVILEGES',
334
        'PROCEDURE',
335
        'PROFILE',
336
        'PUBLIC',
337
        'PURGE',
338
        'QUEUE',
339
        'QUOTA',
340
        'RANGE',
341
        'RAW',
342
        'RBA',
343
        'READ',
344
        'READUP',
345
        'REAL',
346
        'REBUILD',
347
        'RECOVER',
348
        'RECOVERABLE',
349
        'RECOVERY',
350
        'REF',
351
        'REFERENCES',
352
        'REFERENCING',
353
        'REFRESH',
354
        'RENAME',
355
        'REPLACE',
356
        'RESET',
357
        'RESETLOGS',
358
        'RESIZE',
359
        'RESOURCE',
360
        'RESTRICTED',
361
        'RETURN',
362
        'RETURNING',
363
        'REUSE',
364
        'REVERSE',
365
        'REVOKE',
366
        'ROLE',
367
        // 'ROLES',
368
        'ROLLBACK',
369
        'ROW',
370
        'ROWID',
371
        'ROWNUM',
372
        'ROWS',
373
        'RULE',
374
        'SAMPLE',
375
        'SAVEPOINT',
376
        'SB4',
377
        'SCAN_INSTANCES',
378
        'SCHEMA',
379
        'SCN',
380
        'SCOPE',
381
        'SD_ALL',
382
        'SD_INHIBIT',
383
        'SD_SHOW',
384
        'SEGMENT',
385
        'SEG_BLOCK',
386
        'SEG_FILE',
387
        'SELECT',
388
        'SEQUENCE',
389
        'SERIALIZABLE',
390
        'SESSION',
391
        'SESSION_CACHED_CURSORS',
392
        'SESSIONS_PER_USER',
393
        'SET',
394
        'SHARE',
395
        'SHARED',
396
        'SHARED_POOL',
397
        'SHRINK',
398
        'SIZE',
399
        'SKIP',
400
        'SKIP_UNUSABLE_INDEXES',
401
        'SMALLINT',
402
        'SNAPSHOT',
403
        'SOME',
404
        'SORT',
405
        'SPECIFICATION',
406
        'SPLIT',
407
        'SQL_TRACE',
408
        'STANDBY',
409
        'START',
410
        'STATEMENT_ID',
411
        'STATISTICS',
412
        'STOP',
413
        'STORAGE',
414
        'STORE',
415
        'STRUCTURE',
416
        'SUCCESSFUL',
417
        'SWITCH',
418
        'SYS_OP_ENFORCE_NOT_NULL$',
419
        'SYS_OP_NTCIMG$',
420
        'SYNONYM',
421
        'SYSDATE',
422
        'SYSDBA',
423
        'SYSOPER',
424
        // 'SYSTEM',
425
        'TABLE',
426
        'TABLES',
427
        'TABLESPACE',
428
        'TABLESPACE_NO',
429
        'TABNO',
430
        'TEMPORARY',
431
        'THAN',
432
        'THE',
433
        'THEN',
434
        'THREAD',
435
        'TIMESTAMP',
436
        'TIME',
437
        'TO',
438
        'TOPLEVEL',
439
        'TRACE',
440
        'TRACING',
441
        'TRANSACTION',
442
        'TRANSITIONAL',
443
        'TRIGGER',
444
        'TRIGGERS',
445
        'TRUE',
446
        'TRUNCATE',
447
        'TX',
448
        // 'TYPE',
449
        'UB2',
450
        'UBA',
451
        'UID',
452
        'UNARCHIVED',
453
        'UNDO',
454
        'UNION',
455
        'UNIQUE',
456
        'UNLIMITED',
457
        'UNLOCK',
458
        'UNRECOVERABLE',
459
        'UNTIL',
460
        'UNUSABLE',
461
        'UNUSED',
462
        'UPDATABLE',
463
        'UPDATE',
464
        'USAGE',
465
        'USE',
466
        'USER',
467
        'USING',
468
        'VALIDATE',
469
        'VALIDATION',
470
        'VALUE',
471
        'VALUES',
472
        'VARCHAR',
473
        'VARCHAR2',
474
        'VARYING',
475
        'VIEW',
476
        'WHEN',
477
        'WHENEVER',
478
        'WHERE',
479
        'WITH',
480
        'WITHOUT',
481
        'WORK',
482
        'WRITE',
483
        'WRITEDOWN',
484
        'WRITEUP',
485
        'XID',
486
        'YEAR',
487
        'ZONE',
488
    ];
489
490
491
492
    /**
493
     * Check if value is an Oracle reserved word.
494
     *
495
     * @param string $value
496
     * @return bool
497
     */
498 4
    public function isReserved($value)
499
    {
500 4
        return \DB::connection()->getDriverName() == 'oracle' && in_array(Str::upper(trim($value)), $this->reserves,
501 4
            true);
502
    }
503
}
504