
DROP FUNCTION IF EXISTS affiliation_FLI_SCHEMA.get_clics(INTEGER);
CREATE OR REPLACE FUNCTION affiliation_FLI_SCHEMA.get_clics(IN INTEGER, OUT clic_id INTEGER, OUT clic_internaute TEXT, OUT clic_programme INTEGER, OUT clic_date_epoch bigint, OUT clic_id_shard BIGINT, OUT clic_id_shard_migration BIGINT, OUT clic_id_shard_migration_function BIGINT, OUT current_schema NAME )
RETURNS SETOF RECORD AS $$
	SELECT clic_id, clic_internaute, clic_programme, clic_date_epoch, clic_id_shard, clic_id_shard_migration, affiliation_FLI_SCHEMA.next_clic_id_shard_migration(clic_id, clic_date_epoch*1000), current_schema
	FROM affiliation_FLI_SCHEMA.clic 
	WHERE clic_id % $1 = 0;
$$ LANGUAGE SQL;

/*
DROP FUNCTION IF EXISTS affiliation_FLI_SCHEMA.stats_clics_site();
CREATE OR REPLACE FUNCTION affiliation_FLI_SCHEMA.stats_clics_site(OUT clic_site INTEGER, OUT clic_internaute TEXT, OUT clic_total BIGINT )
RETURNS SETOF RECORD AS $$
	SELECT clic_site, clic_internaute, COUNT(*) as total
	FROM affiliation_FLI_SCHEMA.clic 
	GROUP BY clic_site, clic_internaute;
$$ LANGUAGE SQL;


DROP FUNCTION IF EXISTS affiliation_FLI_SCHEMA.clic_insert(IN TEXT, IN INTEGER, IN INTEGER);
CREATE OR REPLACE FUNCTION affiliation_FLI_SCHEMA.clic_insert( IN TEXT, IN INTEGER, IN INTEGER, OUT clic_id INTEGER, OUT current_schema NAME )
RETURNS SETOF RECORD AS $$
	INSERT INTO affiliation_FLI_SCHEMA.clic(clic_internaute, clic_lien, clic_programme)
	VALUES ($1, $2, $3)
	RETURNING clic_id, current_schema;
$$ LANGUAGE SQL;

DROP FUNCTION IF EXISTS affiliation_FLI_SCHEMA.get_clic_internaute_programme(IN TEXT, IN INTEGER);
CREATE OR REPLACE FUNCTION affiliation_FLI_SCHEMA.get_clic_internaute_programme( IN TEXT, IN INTEGER, OUT clic_id INTEGER, OUT clic_internaute TEXT, OUT clic_lien INTEGER, OUT clic_programme INTEGER, OUT clic_affilie INTEGER, OUT clic_optionnel TEXT, OUT clic_ip INET, OUT clic_date TIMESTAMP WITHOUT TIME ZONE, OUT clic_optionnel_1 TEXT, OUT clic_optionnel_2 TEXT, OUT clic_optionnel_3 TEXT, OUT clic_optionnel_4 TEXT, OUT clic_optionnel_5 TEXT, OUT clic_optionnel_6 TEXT, OUT clic_optionnel_7 TEXT, OUT clic_optionnel_8 TEXT, OUT clic_optionnel_9 TEXT, OUT clic_site INTEGER, OUT clic_annonceur INTEGER, OUT clic_date_epoch BIGINT, OUT clic_id_shard BIGINT, OUT current_schema NAME)
RETURNS SETOF RECORD AS $$
	SELECT *, current_schema
	FROM affiliation_FLI_SCHEMA.clic c
	WHERE c.clic_internaute = $1
	AND c.clic_programme = $2
	ORDER BY clic_id DESC
$$ LANGUAGE SQL;


DROP FUNCTION IF EXISTS affiliation_FLI_SCHEMA.get_clics(TEXT, INTEGER);
CREATE OR REPLACE FUNCTION affiliation_FLI_SCHEMA.get_clics(IN TEXT, IN INTEGER, OUT clic_id INTEGER, OUT clic_internaute TEXT, OUT clic_programme INTEGER, OUT current_schema NAME )
RETURNS SETOF RECORD AS $$
	SELECT 0, $1, $2, current_schema

	UNION ALL

        SELECT clic_id, clic_internaute, clic_programme, current_schema
        FROM affiliation_FLI_SCHEMA.clic
        WHERE clic_internaute = $1
	AND clic_programme = $2;
$$ LANGUAGE SQL;


DROP FUNCTION IF EXISTS affiliation_FLI_SCHEMA.clic_insert(
IN INT,
IN CHARACTER VARYING,
IN INT,
IN INT,
IN INT,
IN CHARACTER VARYING,
IN INET,
IN TIMESTAMP WITHOUT TIME ZONE,
IN CHARACTER VARYING,
IN CHARACTER VARYING,
IN CHARACTER VARYING,
IN CHARACTER VARYING,
IN CHARACTER VARYING,
IN CHARACTER VARYING,
IN CHARACTER VARYING,
IN CHARACTER VARYING,
IN CHARACTER VARYING,
IN INT,
IN INT,
IN BIGINT);
CREATE OR REPLACE FUNCTION affiliation_FLI_SCHEMA.clic_insert(
IN INT, 
IN CHARACTER VARYING, 
IN INT, 
IN INT, 
IN INT, 
IN CHARACTER VARYING, 
IN INET,
IN TIMESTAMP WITHOUT TIME ZONE, 
IN CHARACTER VARYING, 
IN CHARACTER VARYING,  
IN CHARACTER VARYING, 
IN CHARACTER VARYING, 
IN CHARACTER VARYING, 
IN CHARACTER VARYING, 
IN CHARACTER VARYING, 
IN CHARACTER VARYING, 
IN CHARACTER VARYING, 
IN INT, 
IN INT, 
IN BIGINT, 
OUT clic_id_shard BIGINT, 
OUT current_schema NAME )
RETURNS SETOF RECORD AS $$
        INSERT INTO affiliation_FLI_SCHEMA.clic(clic_id, clic_internaute, clic_lien, clic_programme, clic_affilie, 
			clic_optionnel, clic_ip, clic_date, clic_optionnel_1, clic_optionnel_2, 
			clic_optionnel_3, clic_optionnel_4, clic_optionnel_5, clic_optionnel_6, 
			clic_optionnel_7, clic_optionnel_8, clic_optionnel_9, clic_site, 
			clic_annonceur, clic_date_epoch)
        VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20)
        RETURNING clic_id_shard, current_schema;
$$ LANGUAGE SQL;
*/
