(deserializer: D)
| 1636 | /// TODO: we should support more edge cases. |
| 1637 | impl<'de, T: DataTypeName> Deserialize<'de> for NullableType<T> { |
| 1638 | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> |
| 1639 | where |
| 1640 | D: Deserializer<'de>, |
| 1641 | { |
| 1642 | let s = String::deserialize(deserializer)?; |
| 1643 | |
| 1644 | let (name, nullable) = s.split_once(' ').unwrap_or((s.as_str(), "")); |
| 1645 | |
| 1646 | if name == T::NAME && nullable.is_empty() { |
| 1647 | Ok(NullableType::from(true)) |
| 1648 | } else if name == T::NAME && nullable.contains("NOT NULL") { |
| 1649 | Ok(NullableType::from(false)) |
| 1650 | } else { |
| 1651 | let expect = format!("{} or {} NOT NULL", T::NAME, T::NAME); |
| 1652 | |
| 1653 | Err(serde::de::Error::invalid_value( |
| 1654 | serde::de::Unexpected::Str(s.as_str()), |
| 1655 | &expect.as_str(), |
| 1656 | )) |
| 1657 | } |
| 1658 | } |
| 1659 | } |
| 1660 | |
| 1661 | pub(crate) fn extract_brackets_pos( |
nothing calls this directly
no test coverage detected