kanidm/docs/v1.0.0rc7/rustdoc/kanidmd_lib/schema/index.html
2023-03-09 23:19:42 +00:00

22 lines
9.2 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="`Schema` is one of the foundational concepts of the server. It provides a set of rules to enforce that `Entries` avas must be compliant to, to be considered valid for commit to the database. This allows us to provide requirements and structure as to what an `Entry` must have and may contain which enables many other parts to function."><meta name="keywords" content="rust, rustlang, rust-lang, schema"><title>kanidmd_lib::schema - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-93196c7a1c3542a8.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-4743e13df3dfe8c4.css"><link rel="stylesheet" disabled href="../../static.files/dark-0e1b889528bd466b.css"><link rel="stylesheet" disabled href="../../static.files/ayu-65289d5d067c7c66.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../static.files/main-3367e395607fafc1.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="logo-container" href="../../kanidmd_lib/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2></h2></nav><nav class="sidebar"><a class="logo-container" href="../../kanidmd_lib/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2 class="location"><a href="#">Module schema</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#traits">Traits</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../index.html">kanidmd_lib</a>::<wbr><a class="mod" href="#">schema</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/kanidmd_lib/schema.rs.html#1-2778">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p><a href="struct.Schema.html"><code>Schema</code></a> is one of the foundational concepts of the server. It provides a
set of rules to enforce that <a href="../entry/index.html"><code>Entries</code></a> avas must be compliant to, to be
considered valid for commit to the database. This allows us to provide
requirements and structure as to what an <a href="../entry/index.html"><code>Entry</code></a> must have and may contain
which enables many other parts to function.</p>
<p>To define this structure we define <a href="struct.SchemaAttribute.html"><code>Attributes</code></a> that provide rules for how
and ava should be structured. We also define <a href="struct.SchemaClass.html"><code>Classes</code></a> that define
the rules of which <a href="struct.SchemaAttribute.html"><code>Attributes</code></a> may or must exist on an <a href="../entry/index.html"><code>Entry</code></a> for it
to be considered valid. An <a href="../entry/index.html"><code>Entry</code></a> must have at least 1 to infinite
<a href="struct.SchemaClass.html"><code>Classes</code></a>. [`Classes] are additive.</p>
</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Schema.html" title="kanidmd_lib::schema::Schema struct">Schema</a></div><div class="item-right docblock-short">Schema stores the set of <a href="struct.SchemaClass.html"><code>Classes</code></a> and <a href="struct.SchemaAttribute.html"><code>Attributes</code></a> that the server will
use to validate <a href="../entry/index.html"><code>Entries</code></a>, <a href="../filter/index.html"><code>Filters</code></a> and <a href="../modify/index.html"><code>Modifications</code></a>. Additionally the
schema stores an extracted copy of the current attribute indexing metadata that
is used by the backend during queries.</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SchemaAttribute.html" title="kanidmd_lib::schema::SchemaAttribute struct">SchemaAttribute</a></div><div class="item-right docblock-short">An item representing an attribute and the rules that enforce it. These rules enforce if an
attribute on an <a href="../entry/index.html"><code>Entry</code></a> may be single or multi value, must be unique amongst all other types
of this attribute, if the attribute should be <a href="../value/enum.IndexType.html"><code>indexed</code></a>, and what type of data <a href="../value/enum.SyntaxType.html"><code>syntax</code></a> it may hold.</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SchemaClass.html" title="kanidmd_lib::schema::SchemaClass struct">SchemaClass</a></div><div class="item-right docblock-short">An item representing a class and the rules for that class. These rules enforce that an
<a href="../entry/index.html"><code>Entry</code></a>s avas conform to a set of requirements, giving structure to an entry about
what avas must or may exist. The kanidm project provides attributes in <code>systemmust</code> and
<code>systemmay</code>, which can not be altered. An administrator may extend these in the <code>must</code>
and <code>may</code> attributes.</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SchemaReadTransaction.html" title="kanidmd_lib::schema::SchemaReadTransaction struct">SchemaReadTransaction</a></div><div class="item-right docblock-short">A readonly transaction of the working schema set.</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SchemaWriteTransaction.html" title="kanidmd_lib::schema::SchemaWriteTransaction struct">SchemaWriteTransaction</a></div><div class="item-right docblock-short">A writable transaction of the working schema set. You should not change this directly,
the writability is for the server internally to allow reloading of the schema. Changes
you make will be lost when the server re-reads the schema from disk.</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.SchemaTransaction.html" title="kanidmd_lib::schema::SchemaTransaction trait">SchemaTransaction</a></div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="kanidmd_lib" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0 (2c8cc3432 2023-03-06)" data-search-js="search-98d53477a794af0b.js" data-settings-js="settings-c3c521c753752a1a.js" data-settings-css="settings-08ddfdda51b8ee2e.css" ></div></body></html>