-
Notifications
You must be signed in to change notification settings - Fork 902
feat(site): display user status counts over time as an indicator of license usage #15893
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 5 commits
69e4a09
0913355
d952af0
34ac634
d5d3021
c6b50af
b2fb346
ad42c16
ed86820
0f17038
1b3976d
e2d0d15
7fdd9a5
aed4132
9c65856
d6c5a4f
d1c5baf
fa66382
a8c125c
726bcba
8bcbe03
494f165
dbebf0b
e85bc1f
e738a0e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
-- Drop the trigger first | ||
DROP TRIGGER IF EXISTS user_status_change_trigger ON users; | ||
|
||
-- Drop the trigger function | ||
DROP FUNCTION IF EXISTS record_user_status_change(); | ||
|
||
-- Drop the indexes | ||
DROP INDEX IF EXISTS idx_user_status_changes_changed_at; | ||
|
||
-- Drop the table | ||
DROP TABLE IF EXISTS user_status_changes; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
CREATE TABLE user_status_changes ( | ||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(), | ||
user_id uuid NOT NULL REFERENCES users(id), | ||
new_status user_status NOT NULL, | ||
changed_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP | ||
); | ||
|
||
COMMENT ON TABLE user_status_changes IS 'Tracks the history of user status changes'; | ||
|
||
CREATE INDEX idx_user_status_changes_changed_at ON user_status_changes(changed_at); | ||
|
||
INSERT INTO user_status_changes ( | ||
user_id, | ||
new_status, | ||
changed_at | ||
) | ||
SELECT | ||
id, | ||
status, | ||
created_at | ||
FROM users | ||
WHERE NOT deleted; | ||
|
||
CREATE OR REPLACE FUNCTION record_user_status_change() RETURNS trigger AS $$ | ||
BEGIN | ||
IF TG_OP = 'INSERT' OR OLD.status IS DISTINCT FROM NEW.status THEN | ||
INSERT INTO user_status_changes ( | ||
user_id, | ||
new_status, | ||
changed_at | ||
) VALUES ( | ||
NEW.id, | ||
NEW.status, | ||
NEW.updated_at | ||
); | ||
END IF; | ||
RETURN NEW; | ||
END; | ||
$$ LANGUAGE plpgsql; | ||
|
||
CREATE TRIGGER user_status_change_trigger | ||
AFTER INSERT OR UPDATE ON users | ||
FOR EACH ROW | ||
EXECUTE FUNCTION record_user_status_change(); |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Uh oh!
There was an error while loading. Please reload this page.