mirror of
https://git.anonymousland.org/anonymousland/synapse-product.git
synced 2024-12-22 11:44:57 -05:00
Merge pull request #3264 from matrix-org/neil/sign-up-stats
daily user type phone home stats
This commit is contained in:
commit
71477f3317
@ -439,6 +439,10 @@ def run(hs):
|
|||||||
total_nonbridged_users = yield hs.get_datastore().count_nonbridged_users()
|
total_nonbridged_users = yield hs.get_datastore().count_nonbridged_users()
|
||||||
stats["total_nonbridged_users"] = total_nonbridged_users
|
stats["total_nonbridged_users"] = total_nonbridged_users
|
||||||
|
|
||||||
|
daily_user_type_results = yield hs.get_datastore().count_daily_user_type()
|
||||||
|
for name, count in daily_user_type_results.iteritems():
|
||||||
|
stats["daily_user_type_" + name] = count
|
||||||
|
|
||||||
room_count = yield hs.get_datastore().get_room_count()
|
room_count = yield hs.get_datastore().get_room_count()
|
||||||
stats["total_room_count"] = room_count
|
stats["total_room_count"] = room_count
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
# Remember to update this number every time a change is made to database
|
# Remember to update this number every time a change is made to database
|
||||||
# schema files, so the users will be informed on server restarts.
|
# schema files, so the users will be informed on server restarts.
|
||||||
SCHEMA_VERSION = 49
|
SCHEMA_VERSION = 50
|
||||||
|
|
||||||
dir_path = os.path.abspath(os.path.dirname(__file__))
|
dir_path = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
|
||||||
|
@ -102,6 +102,13 @@ class RegistrationStore(RegistrationWorkerStore,
|
|||||||
columns=["user_id", "device_id"],
|
columns=["user_id", "device_id"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.register_background_index_update(
|
||||||
|
"users_creation_ts",
|
||||||
|
index_name="users_creation_ts",
|
||||||
|
table="users",
|
||||||
|
columns=["creation_ts"],
|
||||||
|
)
|
||||||
|
|
||||||
# we no longer use refresh tokens, but it's possible that some people
|
# we no longer use refresh tokens, but it's possible that some people
|
||||||
# might have a background update queued to build this index. Just
|
# might have a background update queued to build this index. Just
|
||||||
# clear the background update.
|
# clear the background update.
|
||||||
@ -486,6 +493,35 @@ class RegistrationStore(RegistrationWorkerStore,
|
|||||||
ret = yield self.runInteraction("count_users", _count_users)
|
ret = yield self.runInteraction("count_users", _count_users)
|
||||||
defer.returnValue(ret)
|
defer.returnValue(ret)
|
||||||
|
|
||||||
|
def count_daily_user_type(self):
|
||||||
|
"""
|
||||||
|
Counts 1) native non guest users
|
||||||
|
2) native guests users
|
||||||
|
3) bridged users
|
||||||
|
who registered on the homeserver in the past 24 hours
|
||||||
|
"""
|
||||||
|
def _count_daily_user_type(txn):
|
||||||
|
yesterday = int(self._clock.time()) - (60 * 60 * 24)
|
||||||
|
|
||||||
|
sql = """
|
||||||
|
SELECT user_type, COALESCE(count(*), 0) AS count FROM (
|
||||||
|
SELECT
|
||||||
|
CASE
|
||||||
|
WHEN is_guest=0 AND appservice_id IS NULL THEN 'native'
|
||||||
|
WHEN is_guest=1 AND appservice_id IS NULL THEN 'guest'
|
||||||
|
WHEN is_guest=0 AND appservice_id IS NOT NULL THEN 'bridged'
|
||||||
|
END AS user_type
|
||||||
|
FROM users
|
||||||
|
WHERE creation_ts > ?
|
||||||
|
) AS t GROUP BY user_type
|
||||||
|
"""
|
||||||
|
results = {'native': 0, 'guest': 0, 'bridged': 0}
|
||||||
|
txn.execute(sql, (yesterday,))
|
||||||
|
for row in txn:
|
||||||
|
results[row[0]] = row[1]
|
||||||
|
return results
|
||||||
|
return self.runInteraction("count_daily_user_type", _count_daily_user_type)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def count_nonbridged_users(self):
|
def count_nonbridged_users(self):
|
||||||
def _count_users(txn):
|
def _count_users(txn):
|
||||||
|
@ -0,0 +1,19 @@
|
|||||||
|
/* Copyright 2018 New Vector Ltd
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
INSERT into background_updates (update_name, progress_json)
|
||||||
|
VALUES ('users_creation_ts', '{}');
|
Loading…
Reference in New Issue
Block a user