-- post_content_meta

	-- get one post_content_meta

	CREATE PROCEDURE get(
		IN post_id INT,
		IN namespace CHAR,
		IN key CHAR,
		
		OUT fetch_one,
	)
	BEGIN

		SELECT value
			FROM post_content_meta AS _
		WHERE _.`key` = :key 
		
		@IF !empty(:post_id) 
		THEN 
			AND _.post_id = :post_id
		END @IF	
		
		@IF !empty(:namespace) 
		THEN 
			AND _.namespace = :namespace
		END @IF		
		;
		
	END
    
	CREATE PROCEDURE set(
		IN post_id INT,
		IN namespace CHAR,
		IN key CHAR,
		IN value CHAR,
		
		OUT insert_id
	)
	BEGIN

        INSERT INTO post_content_meta
            (post_id, language_id, namespace, `key`, value )
        
        VALUES (:post_id, 0, :namespace, :key, :value )
        
		ON CONFLICT(`post_id`, `language_id`, `namespace`, `key`) DO UPDATE SET `value` = :value;
		
	END


    CREATE PROCEDURE getMulti(
		IN post_id INT,
		IN namespace CHAR,
		IN key ARRAY,
		OUT fetch_all
	)
	BEGIN

		SELECT post_id, namespace, `key`, value
            FROM post_content_meta AS _
		WHERE 1 = 1
		
		@IF !empty(:post_id) 
		THEN 
			AND _.post_id = :post_id
		END @IF	
		
		@IF !empty(:namespace) 
		THEN 
			AND _.namespace = :namespace
		END @IF	
		
		@IF !empty(:key) 
		THEN 
			AND _.`key` IN (:key)
		END @IF	
;
		
	END    
    
    
	CREATE PROCEDURE setMulti(
		IN post_id INT,
		IN namespace CHAR,
		IN meta ARRAY
	)
	BEGIN

        INSERT INTO post_content_meta
            (post_id, namespace, `key`, value)

			VALUES (:post_id, :namespace, :each)

        ON CONFLICT(`post_id`, `namespace`, `key`) DO UPDATE SET `value` = :each.value;
		
	END
    
	CREATE PROCEDURE delete(
		IN post_id INT,
		IN namespace CHAR,
		IN key ARRAY
	)
	BEGIN

        	DELETE FROM 
			post_content_meta 
		WHERE 1 = 1
		
		@IF !empty(:namespace) 
		THEN 
			AND namespace = :namespace
		END @IF	

		@IF !empty(:key) 
		THEN 
			AND `key` IN (:key)
		END @IF	

		@IF !empty(:post_id) 
		THEN 
			AND post_id = :post_id
		END @IF	
		;		
		
	END    
