167 lines
3.1 KiB
Zig
167 lines
3.1 KiB
Zig
pub const Str = []const u8;
|
|
|
|
pub const SumTypeVariant = struct {
|
|
name: ?Str,
|
|
algebraic_type: AlgebraicType,
|
|
};
|
|
|
|
pub const SumType = struct {
|
|
variants: []const SumTypeVariant,
|
|
};
|
|
|
|
pub const ArrayType = struct {
|
|
/// The base type every element of the array has.
|
|
elem_ty: []const AlgebraicType,
|
|
};
|
|
|
|
pub const AlgebraicType = union(enum) {
|
|
Ref: AlgebraicTypeRef,
|
|
Sum: SumType,
|
|
Product: ProductType,
|
|
Array: ArrayType,
|
|
String: void,
|
|
Bool: void,
|
|
I8: void,
|
|
U8: void,
|
|
I16: void,
|
|
U16: void,
|
|
I32: void,
|
|
U32: void,
|
|
I64: void,
|
|
U64: void,
|
|
I128: void,
|
|
U128: void,
|
|
I256: void,
|
|
U256: void,
|
|
F32: void,
|
|
F64: void,
|
|
};
|
|
|
|
pub const Typespace = struct {
|
|
types: []const AlgebraicType,
|
|
};
|
|
|
|
pub const RawIdentifier = Str;
|
|
|
|
pub const AlgebraicTypeRef = struct {
|
|
inner: u32,
|
|
};
|
|
|
|
pub const RawIndexAlgorithm = union {
|
|
BTree: []const u16,
|
|
Hash: []const u16,
|
|
Direct: u16,
|
|
};
|
|
|
|
pub const RawIndexDefV9 = struct {
|
|
name: ?Str,
|
|
accessor_name: ?Str,
|
|
algorithm: RawIndexAlgorithm,
|
|
};
|
|
|
|
pub const RawUniqueConstraintDataV9 = union {
|
|
Columns: u16,
|
|
};
|
|
|
|
pub const RawConstraintDataV9 = union {
|
|
unique: RawUniqueConstraintDataV9,
|
|
};
|
|
|
|
pub const RawConstraintDefV9 = struct {
|
|
name: ?Str,
|
|
data: RawConstraintDataV9
|
|
};
|
|
|
|
pub const RawSequenceDefV9 = struct {
|
|
Name: ?Str,
|
|
Column: u16,
|
|
Start: ?i128,
|
|
MinValue: ?i128,
|
|
MaxValue: ?i128,
|
|
Increment: i128
|
|
};
|
|
|
|
pub const RawScheduleDefV9 = struct {
|
|
Name: ?Str,
|
|
ReducerName: Str,
|
|
ScheduledAtColumn: u16
|
|
};
|
|
|
|
pub const TableType = enum {
|
|
System,
|
|
User,
|
|
};
|
|
|
|
pub const TableAccess = enum {
|
|
Public,
|
|
Private,
|
|
};
|
|
|
|
pub const RawTableDefV9 = struct {
|
|
name: RawIdentifier,
|
|
product_type_ref: AlgebraicTypeRef,
|
|
primary_key: []const u16,
|
|
indexes: []const RawIndexDefV9,
|
|
constraints: []const RawConstraintDefV9,
|
|
sequences: []const RawSequenceDefV9,
|
|
schedule: ?RawScheduleDefV9,
|
|
table_type: TableType,
|
|
table_access: TableAccess,
|
|
};
|
|
|
|
pub const ProductTypeElement = struct {
|
|
name: ?Str,
|
|
algebraic_type: AlgebraicType,
|
|
};
|
|
|
|
pub const ProductType = struct {
|
|
elements: []const ProductTypeElement,
|
|
};
|
|
|
|
pub const Lifecycle = enum {
|
|
Init,
|
|
OnConnect,
|
|
OnDisconnect,
|
|
};
|
|
|
|
pub const ReducerContext = struct {
|
|
indentity: u256,
|
|
};
|
|
|
|
pub const ReducerFn = fn(*ReducerContext) void;
|
|
|
|
pub const RawReducerDefV9 = struct {
|
|
name: RawIdentifier,
|
|
params: ProductType,
|
|
lifecycle: ?Lifecycle,
|
|
};
|
|
|
|
pub const RawScopedTypeNameV9 = struct {
|
|
scope: []RawIdentifier,
|
|
name: RawIdentifier,
|
|
};
|
|
|
|
pub const RawTypeDefV9 = struct {
|
|
name: RawScopedTypeNameV9,
|
|
ty: AlgebraicTypeRef,
|
|
custom_ordering: bool,
|
|
};
|
|
|
|
pub const RawMiscModuleExportV9 = enum {
|
|
RESERVED,
|
|
};
|
|
|
|
pub const RawSql = []u8;
|
|
|
|
pub const RawRowLevelSecurityDefV9 = struct {
|
|
sql: RawSql,
|
|
};
|
|
|
|
pub const RawModuleDefV9 = struct {
|
|
typespace: Typespace,
|
|
tables: []const RawTableDefV9,
|
|
reducers: []const RawReducerDefV9,
|
|
types: []const RawTypeDefV9,
|
|
misc_exports: []const RawMiscModuleExportV9,
|
|
row_level_security: []const RawRowLevelSecurityDefV9,
|
|
};
|