1use core::fmt;
10
11#[derive(Debug)]
13pub enum CoreError {
14 MissingPrimaryKey { model_name: String },
16
17 UnknownType {
19 model_name: String,
20 field_name: String,
21 type_name: String,
22 },
23
24 InvalidDefault {
26 model_name: String,
27 field_name: String,
28 message: String,
29 },
30
31 DuplicateName { name: String, kind: &'static str },
33
34 InvalidRelationFields {
36 model_name: String,
37 field_name: String,
38 message: String,
39 },
40
41 UnknownProvider { provider: String },
43
44 Validation { message: String },
46}
47
48impl fmt::Display for CoreError {
49 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
50 match self {
51 Self::MissingPrimaryKey { model_name } => {
52 write!(
53 f,
54 "Model `{model_name}` is missing a primary key (@id or @@id)"
55 )
56 }
57 Self::UnknownType {
58 model_name,
59 field_name,
60 type_name,
61 } => {
62 write!(
63 f,
64 "Unknown type `{type_name}` in field `{field_name}` of model `{model_name}`"
65 )
66 }
67 Self::InvalidDefault {
68 model_name,
69 field_name,
70 message,
71 } => {
72 write!(
73 f,
74 "Invalid default for `{model_name}.{field_name}`: {message}"
75 )
76 }
77 Self::DuplicateName { name, kind } => {
78 write!(f, "Duplicate {kind} name: `{name}`")
79 }
80 Self::InvalidRelationFields {
81 model_name,
82 field_name,
83 message,
84 } => {
85 write!(
86 f,
87 "Invalid @relation on `{model_name}.{field_name}`: {message}"
88 )
89 }
90 Self::UnknownProvider { provider } => {
91 write!(f, "Unknown database provider: `{provider}`")
92 }
93 Self::Validation { message } => {
94 write!(f, "Validation error: {message}")
95 }
96 }
97 }
98}
99
100impl std::error::Error for CoreError {}