summaryrefslogtreecommitdiff
path: root/error.zig
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--error.zig240
1 files changed, 240 insertions, 0 deletions
diff --git a/error.zig b/error.zig
new file mode 100644
index 0000000..bcccdaf
--- /dev/null
+++ b/error.zig
@@ -0,0 +1,240 @@
1const std = @import("std");
2
3const c = @cImport({
4 @cInclude("sqlite3.h");
5});
6
7pub const SQLiteExtendedIOError = error{
8 SQLiteIOErrRead,
9 SQLiteIOErrShortRead,
10 SQLiteIOErrWrite,
11 SQLiteIOErrFsync,
12 SQLiteIOErrDirFsync,
13 SQLiteIOErrTruncate,
14 SQLiteIOErrFstat,
15 SQLiteIOErrUnlock,
16 SQLiteIOErrRDLock,
17 SQLiteIOErrDelete,
18 SQLiteIOErrBlocked,
19 SQLiteIOErrNoMem,
20 SQLiteIOErrAccess,
21 SQLiteIOErrCheckReservedLock,
22 SQLiteIOErrLock,
23 SQLiteIOErrClose,
24 SQLiteIOErrDirClose,
25 SQLiteIOErrSHMOpen,
26 SQLiteIOErrSHMSize,
27 SQLiteIOErrSHMLock,
28 SQLiteIOErrSHMMap,
29 SQLiteIOErrSeek,
30 SQLiteIOErrDeleteNoEnt,
31 SQLiteIOErrMmap,
32 SQLiteIOErrGetTempPath,
33 SQLiteIOErrConvPath,
34 SQLiteIOErrVnode,
35 SQLiteIOErrAuth,
36 SQLiteIOErrBeginAtomic,
37 SQLiteIOErrCommitAtomic,
38 SQLiteIOErrRollbackAtomic,
39 SQLiteIOErrData,
40 SQLiteIOErrCorruptFS,
41};
42
43pub const SQLiteExtendedCantOpenError = error{
44 SQLiteCantOpenNoTempDir,
45 SQLiteCantOpenIsDir,
46 SQLiteCantOpenFullPath,
47 SQLiteCantOpenConvPath,
48 SQLiteCantOpenDirtyWAL,
49 SQLiteCantOpenSymlink,
50};
51
52pub const SQLiteExtendedReadOnlyError = error{
53 SQLiteReadOnlyRecovery,
54 SQLiteReadOnlyCantLock,
55 SQLiteReadOnlyRollback,
56 SQLiteReadOnlyDBMoved,
57 SQLiteReadOnlyCantInit,
58 SQLiteReadOnlyDirectory,
59};
60
61pub const SQLiteExtendedConstraintError = error{
62 SQLiteConstraintCheck,
63 SQLiteConstraintCommitHook,
64 SQLiteConstraintForeignKey,
65 SQLiteConstraintFunction,
66 SQLiteConstraintNotNull,
67 SQLiteConstraintPrimaryKey,
68 SQLiteConstraintTrigger,
69 SQLiteConstraintUnique,
70 SQLiteConstraintVTab,
71 SQLiteConstraintRowID,
72 SQLiteConstraintPinned,
73};
74
75pub const SQLiteExtendedError = error{
76 SQLiteErrorMissingCollSeq,
77 SQLiteErrorRetry,
78 SQLiteErrorSnapshot,
79
80 SQLiteLockedSharedCache,
81 SQLiteLockedVTab,
82
83 SQLiteBusyRecovery,
84 SQLiteBusySnapshot,
85 SQLiteBusyTimeout,
86
87 SQLiteCorruptVTab,
88 SQLiteCorruptSequence,
89 SQLiteCorruptIndex,
90
91 SQLiteAbortRollback,
92};
93
94pub const SQLiteError = error{
95 SQLiteError,
96 SQLiteInternal,
97 SQLitePerm,
98 SQLiteAbort,
99 SQLiteBusy,
100 SQLiteLocked,
101 SQLiteNoMem,
102 SQLiteReadOnly,
103 SQLiteInterrupt,
104 SQLiteIOErr,
105 SQLiteCorrupt,
106 SQLiteNotFound,
107 SQLiteFull,
108 SQLiteCantOpen,
109 SQLiteProtocol,
110 SQLiteEmpty,
111 SQLiteSchema,
112 SQLiteTooBig,
113 SQLiteConstraint,
114 SQLiteMismatch,
115 SQLiteMisuse,
116 SQLiteNoLFS,
117 SQLiteAuth,
118 SQLiteRange,
119 SQLiteNotADatabase,
120 SQLiteNotice,
121 SQLiteWarning,
122};
123
124pub const Error = SQLiteError ||
125 SQLiteExtendedError ||
126 SQLiteExtendedIOError ||
127 SQLiteExtendedCantOpenError ||
128 SQLiteExtendedReadOnlyError ||
129 SQLiteExtendedConstraintError;
130
131pub fn errorFromResultCode(code: c_int) Error {
132 return switch (code) {
133 c.SQLITE_ERROR => error.SQLiteError,
134 c.SQLITE_INTERNAL => error.SQLiteInternal,
135 c.SQLITE_PERM => error.SQLitePerm,
136 c.SQLITE_ABORT => error.SQLiteAbort,
137 c.SQLITE_BUSY => error.SQLiteBusy,
138 c.SQLITE_LOCKED => error.SQLiteLocked,
139 c.SQLITE_NOMEM => error.SQLiteNoMem,
140 c.SQLITE_READONLY => error.SQLiteReadOnly,
141 c.SQLITE_INTERRUPT => error.SQLiteInterrupt,
142 c.SQLITE_IOERR => error.SQLiteIOErr,
143 c.SQLITE_CORRUPT => error.SQLiteCorrupt,
144 c.SQLITE_NOTFOUND => error.SQLiteNotFound,
145 c.SQLITE_FULL => error.SQLiteFull,
146 c.SQLITE_CANTOPEN => error.SQLiteCantOpen,
147 c.SQLITE_PROTOCOL => error.SQLiteProtocol,
148 c.SQLITE_EMPTY => error.SQLiteEmpty,
149 c.SQLITE_SCHEMA => error.SQLiteSchema,
150 c.SQLITE_TOOBIG => error.SQLiteTooBig,
151 c.SQLITE_CONSTRAINT => error.SQLiteConstraint,
152 c.SQLITE_MISMATCH => error.SQLiteMismatch,
153 c.SQLITE_MISUSE => error.SQLiteMisuse,
154 c.SQLITE_NOLFS => error.SQLiteNoLFS,
155 c.SQLITE_AUTH => error.SQLiteAuth,
156 c.SQLITE_RANGE => error.SQLiteRange,
157 c.SQLITE_NOTADB => error.SQLiteNotADatabase,
158 c.SQLITE_NOTICE => error.SQLiteNotice,
159 c.SQLITE_WARNING => error.SQLiteWarning,
160
161 c.SQLITE_ERROR_MISSING_COLLSEQ => error.SQLiteErrorMissingCollSeq,
162 c.SQLITE_ERROR_RETRY => error.SQLiteErrorRetry,
163 c.SQLITE_ERROR_SNAPSHOT => error.SQLiteErrorSnapshot,
164
165 c.SQLITE_IOERR_READ => error.SQLiteIOErrRead,
166 c.SQLITE_IOERR_SHORT_READ => error.SQLiteIOErrShortRead,
167 c.SQLITE_IOERR_WRITE => error.SQLiteIOErrWrite,
168 c.SQLITE_IOERR_FSYNC => error.SQLiteIOErrFsync,
169 c.SQLITE_IOERR_DIR_FSYNC => error.SQLiteIOErrDirFsync,
170 c.SQLITE_IOERR_TRUNCATE => error.SQLiteIOErrTruncate,
171 c.SQLITE_IOERR_FSTAT => error.SQLiteIOErrFstat,
172 c.SQLITE_IOERR_UNLOCK => error.SQLiteIOErrUnlock,
173 c.SQLITE_IOERR_RDLOCK => error.SQLiteIOErrRDLock,
174 c.SQLITE_IOERR_DELETE => error.SQLiteIOErrDelete,
175 c.SQLITE_IOERR_BLOCKED => error.SQLiteIOErrBlocked,
176 c.SQLITE_IOERR_NOMEM => error.SQLiteIOErrNoMem,
177 c.SQLITE_IOERR_ACCESS => error.SQLiteIOErrAccess,
178 c.SQLITE_IOERR_CHECKRESERVEDLOCK => error.SQLiteIOErrCheckReservedLock,
179 c.SQLITE_IOERR_LOCK => error.SQLiteIOErrLock,
180 c.SQLITE_IOERR_CLOSE => error.SQLiteIOErrClose,
181 c.SQLITE_IOERR_DIR_CLOSE => error.SQLiteIOErrDirClose,
182 c.SQLITE_IOERR_SHMOPEN => error.SQLiteIOErrSHMOpen,
183 c.SQLITE_IOERR_SHMSIZE => error.SQLiteIOErrSHMSize,
184 c.SQLITE_IOERR_SHMLOCK => error.SQLiteIOErrSHMLock,
185 c.SQLITE_IOERR_SHMMAP => error.SQLiteIOErrSHMMap,
186 c.SQLITE_IOERR_SEEK => error.SQLiteIOErrSeek,
187 c.SQLITE_IOERR_DELETE_NOENT => error.SQLiteIOErrDeleteNoEnt,
188 c.SQLITE_IOERR_MMAP => error.SQLiteIOErrMmap,
189 c.SQLITE_IOERR_GETTEMPPATH => error.SQLiteIOErrGetTempPath,
190 c.SQLITE_IOERR_CONVPATH => error.SQLiteIOErrConvPath,
191 c.SQLITE_IOERR_VNODE => error.SQLiteIOErrVnode,
192 c.SQLITE_IOERR_AUTH => error.SQLiteIOErrAuth,
193 c.SQLITE_IOERR_BEGIN_ATOMIC => error.SQLiteIOErrBeginAtomic,
194 c.SQLITE_IOERR_COMMIT_ATOMIC => error.SQLiteIOErrCommitAtomic,
195 c.SQLITE_IOERR_ROLLBACK_ATOMIC => error.SQLiteIOErrRollbackAtomic,
196 c.SQLITE_IOERR_DATA => error.SQLiteIOErrData,
197 c.SQLITE_IOERR_CORRUPTFS => error.SQLiteIOErrCorruptFS,
198
199 c.SQLITE_LOCKED_SHAREDCACHE => error.SQLiteLockedSharedCache,
200 c.SQLITE_LOCKED_VTAB => error.SQLiteLockedVTab,
201
202 c.SQLITE_BUSY_RECOVERY => error.SQLiteBusyRecovery,
203 c.SQLITE_BUSY_SNAPSHOT => error.SQLiteBusySnapshot,
204 c.SQLITE_BUSY_TIMEOUT => error.SQLiteBusyTimeout,
205
206 c.SQLITE_CANTOPEN_NOTEMPDIR => error.SQLiteCantOpenNoTempDir,
207 c.SQLITE_CANTOPEN_ISDIR => error.SQLiteCantOpenIsDir,
208 c.SQLITE_CANTOPEN_FULLPATH => error.SQLiteCantOpenFullPath,
209 c.SQLITE_CANTOPEN_CONVPATH => error.SQLiteCantOpenConvPath,
210 c.SQLITE_CANTOPEN_DIRTYWAL => error.SQLiteCantOpenDirtyWAL,
211 c.SQLITE_CANTOPEN_SYMLINK => error.SQLiteCantOpenSymlink,
212
213 c.SQLITE_CORRUPT_VTAB => error.SQLiteCorruptVTab,
214 c.SQLITE_CORRUPT_SEQUENCE => error.SQLiteCorruptSequence,
215 c.SQLITE_CORRUPT_INDEX => error.SQLiteCorruptIndex,
216
217 c.SQLITE_READONLY_RECOVERY => error.SQLiteReadOnlyRecovery,
218 c.SQLITE_READONLY_CANTLOCK => error.SQLiteReadOnlyCantLock,
219 c.SQLITE_READONLY_ROLLBACK => error.SQLiteReadOnlyRollback,
220 c.SQLITE_READONLY_DBMOVED => error.SQLiteReadOnlyDBMoved,
221 c.SQLITE_READONLY_CANTINIT => error.SQLiteReadOnlyCantInit,
222 c.SQLITE_READONLY_DIRECTORY => error.SQLiteReadOnlyDirectory,
223
224 c.SQLITE_ABORT_ROLLBACK => error.SQLiteAbortRollback,
225
226 c.SQLITE_CONSTRAINT_CHECK => error.SQLiteConstraintCheck,
227 c.SQLITE_CONSTRAINT_COMMITHOOK => error.SQLiteConstraintCommitHook,
228 c.SQLITE_CONSTRAINT_FOREIGNKEY => error.SQLiteConstraintForeignKey,
229 c.SQLITE_CONSTRAINT_FUNCTION => error.SQLiteConstraintFunction,
230 c.SQLITE_CONSTRAINT_NOTNULL => error.SQLiteConstraintNotNull,
231 c.SQLITE_CONSTRAINT_PRIMARYKEY => error.SQLiteConstraintPrimaryKey,
232 c.SQLITE_CONSTRAINT_TRIGGER => error.SQLiteConstraintTrigger,
233 c.SQLITE_CONSTRAINT_UNIQUE => error.SQLiteConstraintUnique,
234 c.SQLITE_CONSTRAINT_VTAB => error.SQLiteConstraintVTab,
235 c.SQLITE_CONSTRAINT_ROWID => error.SQLiteConstraintRowID,
236 c.SQLITE_CONSTRAINT_PINNED => error.SQLiteConstraintPinned,
237
238 else => std.debug.panic("invalid result code {}", .{code}),
239 };
240}