summaryrefslogtreecommitdiff
path: root/error.zig
blob: bcccdafd263f590e5edf23263bad9aa9db7604f5 (plain) (blame)
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
234
235
236
237
238
239
240
const std = @import("std");

const c = @cImport({
    @cInclude("sqlite3.h");
});

pub const SQLiteExtendedIOError = error{
    SQLiteIOErrRead,
    SQLiteIOErrShortRead,
    SQLiteIOErrWrite,
    SQLiteIOErrFsync,
    SQLiteIOErrDirFsync,
    SQLiteIOErrTruncate,
    SQLiteIOErrFstat,
    SQLiteIOErrUnlock,
    SQLiteIOErrRDLock,
    SQLiteIOErrDelete,
    SQLiteIOErrBlocked,
    SQLiteIOErrNoMem,
    SQLiteIOErrAccess,
    SQLiteIOErrCheckReservedLock,
    SQLiteIOErrLock,
    SQLiteIOErrClose,
    SQLiteIOErrDirClose,
    SQLiteIOErrSHMOpen,
    SQLiteIOErrSHMSize,
    SQLiteIOErrSHMLock,
    SQLiteIOErrSHMMap,
    SQLiteIOErrSeek,
    SQLiteIOErrDeleteNoEnt,
    SQLiteIOErrMmap,
    SQLiteIOErrGetTempPath,
    SQLiteIOErrConvPath,
    SQLiteIOErrVnode,
    SQLiteIOErrAuth,
    SQLiteIOErrBeginAtomic,
    SQLiteIOErrCommitAtomic,
    SQLiteIOErrRollbackAtomic,
    SQLiteIOErrData,
    SQLiteIOErrCorruptFS,
};

pub const SQLiteExtendedCantOpenError = error{
    SQLiteCantOpenNoTempDir,
    SQLiteCantOpenIsDir,
    SQLiteCantOpenFullPath,
    SQLiteCantOpenConvPath,
    SQLiteCantOpenDirtyWAL,
    SQLiteCantOpenSymlink,
};

pub const SQLiteExtendedReadOnlyError = error{
    SQLiteReadOnlyRecovery,
    SQLiteReadOnlyCantLock,
    SQLiteReadOnlyRollback,
    SQLiteReadOnlyDBMoved,
    SQLiteReadOnlyCantInit,
    SQLiteReadOnlyDirectory,
};

pub const SQLiteExtendedConstraintError = error{
    SQLiteConstraintCheck,
    SQLiteConstraintCommitHook,
    SQLiteConstraintForeignKey,
    SQLiteConstraintFunction,
    SQLiteConstraintNotNull,
    SQLiteConstraintPrimaryKey,
    SQLiteConstraintTrigger,
    SQLiteConstraintUnique,
    SQLiteConstraintVTab,
    SQLiteConstraintRowID,
    SQLiteConstraintPinned,
};

pub const SQLiteExtendedError = error{
    SQLiteErrorMissingCollSeq,
    SQLiteErrorRetry,
    SQLiteErrorSnapshot,

    SQLiteLockedSharedCache,
    SQLiteLockedVTab,

    SQLiteBusyRecovery,
    SQLiteBusySnapshot,
    SQLiteBusyTimeout,

    SQLiteCorruptVTab,
    SQLiteCorruptSequence,
    SQLiteCorruptIndex,

    SQLiteAbortRollback,
};

pub const SQLiteError = error{
    SQLiteError,
    SQLiteInternal,
    SQLitePerm,
    SQLiteAbort,
    SQLiteBusy,
    SQLiteLocked,
    SQLiteNoMem,
    SQLiteReadOnly,
    SQLiteInterrupt,
    SQLiteIOErr,
    SQLiteCorrupt,
    SQLiteNotFound,
    SQLiteFull,
    SQLiteCantOpen,
    SQLiteProtocol,
    SQLiteEmpty,
    SQLiteSchema,
    SQLiteTooBig,
    SQLiteConstraint,
    SQLiteMismatch,
    SQLiteMisuse,
    SQLiteNoLFS,
    SQLiteAuth,
    SQLiteRange,
    SQLiteNotADatabase,
    SQLiteNotice,
    SQLiteWarning,
};

pub const Error = SQLiteError ||
    SQLiteExtendedError ||
    SQLiteExtendedIOError ||
    SQLiteExtendedCantOpenError ||
    SQLiteExtendedReadOnlyError ||
    SQLiteExtendedConstraintError;

pub fn errorFromResultCode(code: c_int) Error {
    return switch (code) {
        c.SQLITE_ERROR => error.SQLiteError,
        c.SQLITE_INTERNAL => error.SQLiteInternal,
        c.SQLITE_PERM => error.SQLitePerm,
        c.SQLITE_ABORT => error.SQLiteAbort,
        c.SQLITE_BUSY => error.SQLiteBusy,
        c.SQLITE_LOCKED => error.SQLiteLocked,
        c.SQLITE_NOMEM => error.SQLiteNoMem,
        c.SQLITE_READONLY => error.SQLiteReadOnly,
        c.SQLITE_INTERRUPT => error.SQLiteInterrupt,
        c.SQLITE_IOERR => error.SQLiteIOErr,
        c.SQLITE_CORRUPT => error.SQLiteCorrupt,
        c.SQLITE_NOTFOUND => error.SQLiteNotFound,
        c.SQLITE_FULL => error.SQLiteFull,
        c.SQLITE_CANTOPEN => error.SQLiteCantOpen,
        c.SQLITE_PROTOCOL => error.SQLiteProtocol,
        c.SQLITE_EMPTY => error.SQLiteEmpty,
        c.SQLITE_SCHEMA => error.SQLiteSchema,
        c.SQLITE_TOOBIG => error.SQLiteTooBig,
        c.SQLITE_CONSTRAINT => error.SQLiteConstraint,
        c.SQLITE_MISMATCH => error.SQLiteMismatch,
        c.SQLITE_MISUSE => error.SQLiteMisuse,
        c.SQLITE_NOLFS => error.SQLiteNoLFS,
        c.SQLITE_AUTH => error.SQLiteAuth,
        c.SQLITE_RANGE => error.SQLiteRange,
        c.SQLITE_NOTADB => error.SQLiteNotADatabase,
        c.SQLITE_NOTICE => error.SQLiteNotice,
        c.SQLITE_WARNING => error.SQLiteWarning,

        c.SQLITE_ERROR_MISSING_COLLSEQ => error.SQLiteErrorMissingCollSeq,
        c.SQLITE_ERROR_RETRY => error.SQLiteErrorRetry,
        c.SQLITE_ERROR_SNAPSHOT => error.SQLiteErrorSnapshot,

        c.SQLITE_IOERR_READ => error.SQLiteIOErrRead,
        c.SQLITE_IOERR_SHORT_READ => error.SQLiteIOErrShortRead,
        c.SQLITE_IOERR_WRITE => error.SQLiteIOErrWrite,
        c.SQLITE_IOERR_FSYNC => error.SQLiteIOErrFsync,
        c.SQLITE_IOERR_DIR_FSYNC => error.SQLiteIOErrDirFsync,
        c.SQLITE_IOERR_TRUNCATE => error.SQLiteIOErrTruncate,
        c.SQLITE_IOERR_FSTAT => error.SQLiteIOErrFstat,
        c.SQLITE_IOERR_UNLOCK => error.SQLiteIOErrUnlock,
        c.SQLITE_IOERR_RDLOCK => error.SQLiteIOErrRDLock,
        c.SQLITE_IOERR_DELETE => error.SQLiteIOErrDelete,
        c.SQLITE_IOERR_BLOCKED => error.SQLiteIOErrBlocked,
        c.SQLITE_IOERR_NOMEM => error.SQLiteIOErrNoMem,
        c.SQLITE_IOERR_ACCESS => error.SQLiteIOErrAccess,
        c.SQLITE_IOERR_CHECKRESERVEDLOCK => error.SQLiteIOErrCheckReservedLock,
        c.SQLITE_IOERR_LOCK => error.SQLiteIOErrLock,
        c.SQLITE_IOERR_CLOSE => error.SQLiteIOErrClose,
        c.SQLITE_IOERR_DIR_CLOSE => error.SQLiteIOErrDirClose,
        c.SQLITE_IOERR_SHMOPEN => error.SQLiteIOErrSHMOpen,
        c.SQLITE_IOERR_SHMSIZE => error.SQLiteIOErrSHMSize,
        c.SQLITE_IOERR_SHMLOCK => error.SQLiteIOErrSHMLock,
        c.SQLITE_IOERR_SHMMAP => error.SQLiteIOErrSHMMap,
        c.SQLITE_IOERR_SEEK => error.SQLiteIOErrSeek,
        c.SQLITE_IOERR_DELETE_NOENT => error.SQLiteIOErrDeleteNoEnt,
        c.SQLITE_IOERR_MMAP => error.SQLiteIOErrMmap,
        c.SQLITE_IOERR_GETTEMPPATH => error.SQLiteIOErrGetTempPath,
        c.SQLITE_IOERR_CONVPATH => error.SQLiteIOErrConvPath,
        c.SQLITE_IOERR_VNODE => error.SQLiteIOErrVnode,
        c.SQLITE_IOERR_AUTH => error.SQLiteIOErrAuth,
        c.SQLITE_IOERR_BEGIN_ATOMIC => error.SQLiteIOErrBeginAtomic,
        c.SQLITE_IOERR_COMMIT_ATOMIC => error.SQLiteIOErrCommitAtomic,
        c.SQLITE_IOERR_ROLLBACK_ATOMIC => error.SQLiteIOErrRollbackAtomic,
        c.SQLITE_IOERR_DATA => error.SQLiteIOErrData,
        c.SQLITE_IOERR_CORRUPTFS => error.SQLiteIOErrCorruptFS,

        c.SQLITE_LOCKED_SHAREDCACHE => error.SQLiteLockedSharedCache,
        c.SQLITE_LOCKED_VTAB => error.SQLiteLockedVTab,

        c.SQLITE_BUSY_RECOVERY => error.SQLiteBusyRecovery,
        c.SQLITE_BUSY_SNAPSHOT => error.SQLiteBusySnapshot,
        c.SQLITE_BUSY_TIMEOUT => error.SQLiteBusyTimeout,

        c.SQLITE_CANTOPEN_NOTEMPDIR => error.SQLiteCantOpenNoTempDir,
        c.SQLITE_CANTOPEN_ISDIR => error.SQLiteCantOpenIsDir,
        c.SQLITE_CANTOPEN_FULLPATH => error.SQLiteCantOpenFullPath,
        c.SQLITE_CANTOPEN_CONVPATH => error.SQLiteCantOpenConvPath,
        c.SQLITE_CANTOPEN_DIRTYWAL => error.SQLiteCantOpenDirtyWAL,
        c.SQLITE_CANTOPEN_SYMLINK => error.SQLiteCantOpenSymlink,

        c.SQLITE_CORRUPT_VTAB => error.SQLiteCorruptVTab,
        c.SQLITE_CORRUPT_SEQUENCE => error.SQLiteCorruptSequence,
        c.SQLITE_CORRUPT_INDEX => error.SQLiteCorruptIndex,

        c.SQLITE_READONLY_RECOVERY => error.SQLiteReadOnlyRecovery,
        c.SQLITE_READONLY_CANTLOCK => error.SQLiteReadOnlyCantLock,
        c.SQLITE_READONLY_ROLLBACK => error.SQLiteReadOnlyRollback,
        c.SQLITE_READONLY_DBMOVED => error.SQLiteReadOnlyDBMoved,
        c.SQLITE_READONLY_CANTINIT => error.SQLiteReadOnlyCantInit,
        c.SQLITE_READONLY_DIRECTORY => error.SQLiteReadOnlyDirectory,

        c.SQLITE_ABORT_ROLLBACK => error.SQLiteAbortRollback,

        c.SQLITE_CONSTRAINT_CHECK => error.SQLiteConstraintCheck,
        c.SQLITE_CONSTRAINT_COMMITHOOK => error.SQLiteConstraintCommitHook,
        c.SQLITE_CONSTRAINT_FOREIGNKEY => error.SQLiteConstraintForeignKey,
        c.SQLITE_CONSTRAINT_FUNCTION => error.SQLiteConstraintFunction,
        c.SQLITE_CONSTRAINT_NOTNULL => error.SQLiteConstraintNotNull,
        c.SQLITE_CONSTRAINT_PRIMARYKEY => error.SQLiteConstraintPrimaryKey,
        c.SQLITE_CONSTRAINT_TRIGGER => error.SQLiteConstraintTrigger,
        c.SQLITE_CONSTRAINT_UNIQUE => error.SQLiteConstraintUnique,
        c.SQLITE_CONSTRAINT_VTAB => error.SQLiteConstraintVTab,
        c.SQLITE_CONSTRAINT_ROWID => error.SQLiteConstraintRowID,
        c.SQLITE_CONSTRAINT_PINNED => error.SQLiteConstraintPinned,

        else => std.debug.panic("invalid result code {}", .{code}),
    };
}