--
-- This file is part of TALER
-- Copyright (C) 2025 Taler Systems SA
--
-- TALER is free software; you can redistribute it and/or modify it under the
-- terms of the GNU General Public License as published by the Free Software
-- Foundation; either version 3, or (at your option) any later version.
--
-- TALER is distributed in the hope that it will be useful, but WITHOUT ANY
-- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-- A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License along with
-- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
--

DROP FUNCTION IF EXISTS merchant_do_update_category;
CREATE FUNCTION merchant_do_update_category (
  IN in_category_serial INT8,
  IN in_category_name TEXT,
  IN in_category_name_i18n JSONB,
  OUT out_conflict BOOL,
  OUT out_not_found BOOL)
LANGUAGE plpgsql
AS $$
BEGIN

BEGIN
  UPDATE merchant_categories SET
    category_name=in_category_name
   ,category_name_i18n=in_category_name_i18n
   WHERE category_serial=in_category_serial;
  out_not_found = NOT FOUND;
  out_conflict = FALSE;
  RETURN;
EXCEPTION
  -- category_name already used by another category
  WHEN unique_violation
  THEN
    out_not_found = FALSE;
    out_conflict = TRUE;
    RETURN;
END;

END $$;
