diesel/pg/query_builder/
on_constraint.rs1use crate::pg::Pg;
2use crate::query_builder::upsert::on_conflict_target::{ConflictTarget, OnConflictTarget};
3use crate::query_builder::*;
4use crate::result::QueryResult;
5
6pub fn on_constraint(constraint_name: &str) -> OnConstraint<'_> {
59 OnConstraint { constraint_name }
60}
61
62#[doc(hidden)]
63#[derive(#[automatically_derived]
impl<'a> ::core::fmt::Debug for OnConstraint<'a> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "OnConstraint",
"constraint_name", &&self.constraint_name)
}
}Debug, #[automatically_derived]
impl<'a> ::core::clone::Clone for OnConstraint<'a> {
#[inline]
fn clone(&self) -> OnConstraint<'a> {
let _: ::core::clone::AssertParamIsClone<&'a str>;
*self
}
}Clone, #[automatically_derived]
impl<'a> ::core::marker::Copy for OnConstraint<'a> { }Copy)]
64pub struct OnConstraint<'a> {
65 constraint_name: &'a str,
66}
67
68impl QueryId for OnConstraint<'_> {
69 type QueryId = ();
70
71 const HAS_STATIC_QUERY_ID: bool = false;
72}
73
74impl QueryFragment<Pg, crate::pg::backend::PgOnConflictClause>
75 for ConflictTarget<OnConstraint<'_>>
76{
77 fn walk_ast<'b>(&'b self, mut out: AstPass<'_, 'b, Pg>) -> QueryResult<()> {
78 out.unsafe_to_cache_prepared();
79 out.push_sql(" ON CONSTRAINT ");
80 out.push_identifier(self.0.constraint_name)?;
81 Ok(())
82 }
83}
84
85impl<Table> OnConflictTarget<Table> for ConflictTarget<OnConstraint<'_>> {}