68 lines
1.3 KiB
MySQL
68 lines
1.3 KiB
MySQL
|
/*
|
||
|
* Utility functions used by unit tests
|
||
|
*
|
||
|
* User accounts
|
||
|
*/
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Find a test address
|
||
|
*/
|
||
|
CREATE FUNCTION _find_address( TEXT ) RETURNS INT AS $$
|
||
|
SELECT id FROM users.addresses WHERE address = $1 || '@example.org';
|
||
|
$$ LANGUAGE SQL;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Create a set of user addresses using some prefix
|
||
|
*/
|
||
|
CREATE FUNCTION _create_addresses( _quantity INT , _prefix TEXT )
|
||
|
RETURNS VOID
|
||
|
AS $$
|
||
|
DECLARE
|
||
|
i INT;
|
||
|
BEGIN
|
||
|
i := 0;
|
||
|
WHILE i < _quantity
|
||
|
LOOP
|
||
|
i := i + 1;
|
||
|
BEGIN
|
||
|
INSERT INTO users.addresses ( address )
|
||
|
VALUES ( _prefix || i::TEXT || '@example.org' );
|
||
|
EXCEPTION
|
||
|
WHEN unique_violation THEN
|
||
|
-- Address already exists, that's nice
|
||
|
END;
|
||
|
END LOOP;
|
||
|
END;
|
||
|
$$ LANGUAGE plpgsql;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Create a set of user accounts
|
||
|
*/
|
||
|
CREATE FUNCTION _create_accounts( _quantity INT , _prefix TEXT )
|
||
|
RETURNS VOID
|
||
|
AS $$
|
||
|
DECLARE
|
||
|
i INT;
|
||
|
BEGIN
|
||
|
PERFORM _create_test_strings( 0 );
|
||
|
PERFORM _create_addresses( _quantity , _prefix );
|
||
|
i := 0;
|
||
|
WHILE i < _quantity
|
||
|
LOOP
|
||
|
i := i + 1;
|
||
|
BEGIN
|
||
|
INSERT INTO users.credentials (
|
||
|
address_id , pass_md5 , pass_sha1 , language_id , credits
|
||
|
) VALUES (
|
||
|
_find_address( _prefix || i::TEXT ) , '' , '' , _get_language( 't' ) , 0
|
||
|
);
|
||
|
EXCEPTION
|
||
|
WHEN unique_violation THEN
|
||
|
-- Account already exists
|
||
|
END;
|
||
|
END LOOP;
|
||
|
END;
|
||
|
$$ LANGUAGE plpgsql;
|