forked from United-Codes/uc_ai
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuninstall.sql
More file actions
234 lines (194 loc) · 7.45 KB
/
uninstall.sql
File metadata and controls
234 lines (194 loc) · 7.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
-- ============================================================================
-- UC AI Framework Uninstall Script
-- ============================================================================
-- Description: Complete removal of UC AI Framework
-- Repository: https://github.com/United-Codes/uc_ai
-- ============================================================================
-- @dblinter ignore(G-5010, G-6010, G-2330, G-4140)
SET ECHO OFF
SET FEEDBACK ON
SET SERVEROUTPUT ON SIZE UNLIMITED
SET VERIFY OFF
-- Spool output to log file
SPOOL uc_ai_uninstall.log
PROMPT ===================================================
PROMPT UC AI Framework Uninstallation Starting...
PROMPT ===================================================
PROMPT
PROMPT WARNING: This will remove all UC AI Framework objects
PROMPT Press Ctrl+C to cancel or Enter to continue...
PAUSE
-- ============================================================================
-- 1. DROP PACKAGES (Reverse order from installation)
-- ============================================================================
PROMPT
PROMPT ===================================================
PROMPT Step 1: Dropping PL/SQL Packages...
PROMPT ===================================================
PROMPT Dropping core UC AI package...
DROP PACKAGE uc_ai;
PROMPT Dropping AI provider packages...
DROP PACKAGE uc_ai_responses_api;
DROP PACKAGE uc_ai_openrouter;
DROP PACKAGE uc_ai_xai;
DROP PACKAGE uc_ai_openai;
DROP PACKAGE uc_ai_ollama;
DROP PACKAGE uc_ai_oci;
DROP PACKAGE uc_ai_google;
DROP PACKAGE uc_ai_anthropic;
PROMPT Dropping API packages...
DROP PACKAGE uc_ai_utils;
DROP PACKAGE uc_ai_agent_workflow_api;
DROP PACKAGE uc_ai_agent_exec_api;
DROP PACKAGE uc_ai_agents_api;
DROP PACKAGE uc_ai_toon;
DROP PACKAGE uc_ai_error;
DROP PACKAGE uc_ai_logger;
DROP PACKAGE uc_ai_structured_output;
DROP PACKAGE uc_ai_message_api;
DROP PACKAGE uc_ai_prompt_profiles_api;
DROP PACKAGE uc_ai_tools_api;
PROMPT Packages dropped successfully.
-- ============================================================================
-- 2. DROP FUNCTIONS (Standalone)
-- ============================================================================
PROMPT
PROMPT ===================================================
PROMPT Step 2: Dropping Standalone Functions...
PROMPT ===================================================
PROMPT Dropping UC_AI_GET_KEY function...
DROP FUNCTION UC_AI_GET_KEY;
PROMPT Functions dropped successfully.
-- ============================================================================
-- 3. DROP TRIGGERS
-- ============================================================================
PROMPT
PROMPT ===================================================
PROMPT Step 3: Dropping Database Triggers...
PROMPT ===================================================
BEGIN
<<triggers_loop>>
FOR rec IN (
SELECT trigger_name
FROM user_triggers
WHERE table_name IN ('UC_AI_TOOLS', 'UC_AI_CATEGORIES', 'UC_AI_TOOL_PARAMETERS', 'UC_AI_TOOL_CATEGORIES')
OR trigger_name LIKE 'UC_AI%'
) LOOP
EXECUTE IMMEDIATE 'DROP TRIGGER ' || rec.trigger_name;
sys.dbms_output.put_line('Dropped trigger: ' || rec.trigger_name);
END LOOP triggers_loop;
END;
/
PROMPT Triggers dropped successfully.
-- ============================================================================
-- 4. DROP TABLES (Drop dependent tables first)
-- ============================================================================
PROMPT
PROMPT ===================================================
PROMPT Step 4: Dropping Tables...
PROMPT ===================================================
BEGIN
-- Drop tables in reverse order with CASCADE CONSTRAINTS
<<tables_loop>>
FOR rec IN (
SELECT table_name
FROM user_tables
WHERE table_name LIKE 'UC_AI%'
ORDER BY table_name DESC
) LOOP
EXECUTE IMMEDIATE 'DROP TABLE ' || rec.table_name || ' CASCADE CONSTRAINTS';
sys.dbms_output.put_line('Dropped table: ' || rec.table_name);
END LOOP tables_loop;
IF SQL%ROWCOUNT = 0 THEN
sys.dbms_output.put_line('No UC AI tables found.');
END IF;
END;
/
PROMPT Tables dropped successfully.
-- ============================================================================
-- 5. DROP SEQUENCES
-- ============================================================================
PROMPT
PROMPT ===================================================
PROMPT Step 5: Dropping Sequences...
PROMPT ===================================================
BEGIN
<<sequences_loop>>
FOR rec IN (
SELECT sequence_name
FROM user_sequences
WHERE sequence_name LIKE 'UC_AI%'
ORDER BY sequence_name
) LOOP
EXECUTE IMMEDIATE 'DROP SEQUENCE ' || rec.sequence_name;
sys.dbms_output.put_line('Dropped sequence: ' || rec.sequence_name);
END LOOP sequences_loop;
IF SQL%ROWCOUNT = 0 THEN
sys.dbms_output.put_line('No UC AI sequences found.');
END IF;
END;
/
PROMPT Sequences dropped successfully.
-- ============================================================================
-- 6. VERIFY CLEANUP
-- ============================================================================
PROMPT
PROMPT ===================================================
PROMPT Step 6: Verification - Checking for Remaining Objects...
PROMPT ===================================================
DECLARE
l_count NUMBER := 0;
BEGIN
-- Check for remaining UC AI objects
SELECT COUNT(*)
INTO l_count
FROM user_objects
WHERE object_name LIKE 'UC_AI%'
OR object_name = 'UC_AI_GET_KEY'
AND object_type NOT IN ('LOB', 'INDEX'); -- Exclude auto-created objects
IF l_count > 0 THEN
sys.dbms_output.put_line('WARNING: ' || l_count || ' UC AI objects still exist:');
sys.dbms_output.put_line('');
<<remaining_objects_loop>>
FOR rec IN (
SELECT object_type, object_name, status
FROM user_objects
WHERE (object_name LIKE 'UC_AI%' OR object_name = 'UC_AI_GET_KEY')
AND object_type NOT IN ('LOB', 'INDEX')
ORDER BY object_type, object_name
) LOOP
sys.dbms_output.put_line(' ' || RPAD(rec.object_type, 20) || ' ' ||
RPAD(rec.object_name, 40) || ' ' || rec.status);
END LOOP remaining_objects_loop;
sys.dbms_output.put_line('');
sys.dbms_output.put_line('You may need to manually drop these objects.');
ELSE
sys.dbms_output.put_line('SUCCESS: All UC AI Framework objects have been removed.');
END IF;
END;
/
-- ============================================================================
-- SUMMARY
-- ============================================================================
PROMPT
PROMPT ===================================================
PROMPT UC AI Framework Uninstallation Complete!
PROMPT ===================================================
PROMPT
PROMPT The following object types have been removed:
PROMPT
PROMPT - All UC AI packages (core, API, and provider packages)
PROMPT - Standalone functions (UC_AI_GET_KEY)
PROMPT - Database triggers on UC AI tables
PROMPT - All UC AI tables
PROMPT - All UC AI sequences
PROMPT
PROMPT For more information, visit:
PROMPT https://github.com/United-Codes/uc_ai
PROMPT https://www.united-codes.com/products/uc-ai/docs/
PROMPT ===================================================
SPOOL OFF
SET ECHO OFF
SET FEEDBACK ON
SET VERIFY ON
-- End of uninstall script