bindy/crd_docs.rs
1// Copyright (c) 2025 Erick Bourgeois, firestoned
2// SPDX-License-Identifier: MIT
3
4//! Module-level documentation for CRD types
5//!
6//! This file contains additional doc examples that will be included in the API reference.
7
8/// # Examples
9///
10/// ## Creating a DNS Zone
11///
12/// ```rust,no_run
13/// # #[allow(deprecated)]
14/// use bindy::crd::{DNSZone, DNSZoneSpec, SOARecord};
15///
16/// let soa = SOARecord {
17/// primary_ns: "ns1.example.com.".to_string(),
18/// admin_email: "admin@example.com".to_string(),
19/// serial: 2024010101,
20/// refresh: 3600,
21/// retry: 600,
22/// expire: 604800,
23/// negative_ttl: 86400,
24/// };
25///
26/// let spec = DNSZoneSpec {
27/// zone_name: "example.com".to_string(),
28/// cluster_ref: None,
29/// soa_record: soa,
30/// ttl: Some(3600),
31/// name_servers: None,
32/// name_server_ips: None,
33/// records_from: None,
34/// bind9_instances_from: None,
35/// dnssec_policy: None,
36/// };
37/// ```
38///
39/// ## Creating DNS Records
40///
41/// ```rust,no_run
42/// use bindy::crd::{ARecordSpec, MXRecordSpec, TXTRecordSpec};
43///
44/// // A Record
45/// let a_record = ARecordSpec {
46/// name: "www".to_string(),
47/// ipv4_addresses: vec!["192.0.2.1".to_string()],
48/// ttl: Some(300),
49/// };
50///
51/// // MX Record
52/// let mx_record = MXRecordSpec {
53/// name: "@".to_string(),
54/// priority: 10,
55/// mail_server: "mail.example.com.".to_string(),
56/// ttl: Some(3600),
57/// };
58///
59/// // TXT Record (SPF)
60/// let txt_record = TXTRecordSpec {
61/// name: "@".to_string(),
62/// text: vec!["v=spf1 include:_spf.example.com ~all".to_string()],
63/// ttl: Some(3600),
64/// };
65/// ```
66pub struct CRDExamples;