diff --git a/drizzle/0001_last_hiroim.sql b/drizzle/0001_last_hiroim.sql new file mode 100644 index 0000000..9975082 --- /dev/null +++ b/drizzle/0001_last_hiroim.sql @@ -0,0 +1 @@ +ALTER TABLE users ADD `rank` integer DEFAULT 9999; \ No newline at end of file diff --git a/drizzle/meta/0001_snapshot.json b/drizzle/meta/0001_snapshot.json new file mode 100644 index 0000000..decf7c5 --- /dev/null +++ b/drizzle/meta/0001_snapshot.json @@ -0,0 +1,551 @@ +{ + "version": "5", + "dialect": "sqlite", + "id": "d7a1e002-36b8-4c25-b935-c826f0a2aaab", + "prevId": "b46f7266-bc92-4a23-b12d-d162624db70a", + "tables": { + "groups": { + "name": "groups", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "groups_name_unique": { + "name": "groups_name_unique", + "columns": [ + "name" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "image_to_user": { + "name": "image_to_user", + "columns": { + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "image_name": { + "name": "image_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_on": { + "name": "created_on", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP" + } + }, + "indexes": {}, + "foreignKeys": { + "image_to_user_user_id_users_id_fk": { + "name": "image_to_user_user_id_users_id_fk", + "tableFrom": "image_to_user", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "opinions": { + "name": "opinions", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'5Choice'" + } + }, + "indexes": { + "opinions_name_unique": { + "name": "opinions_name_unique", + "columns": [ + "name" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "provinces": { + "name": "provinces", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "provinces_name_unique": { + "name": "provinces_name_unique", + "columns": [ + "name" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "users": { + "name": "users", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "firstName": { + "name": "firstName", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "lastName": { + "name": "lastName", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "registerno": { + "name": "registerno", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "cid": { + "name": "cid", + "type": "text(13)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "age": { + "name": "age", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "phone": { + "name": "phone", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "public_phone": { + "name": "public_phone", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "facebook": { + "name": "facebook", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "twitter": { + "name": "twitter", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "tiktok": { + "name": "tiktok", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "other_social": { + "name": "other_social", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "image": { + "name": "image", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "job": { + "name": "job", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "education": { + "name": "education", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "vision": { + "name": "vision", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "reason": { + "name": "reason", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "group_id": { + "name": "group_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "zone_id": { + "name": "zone_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "verified": { + "name": "verified", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "rank": { + "name": "rank", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 9999 + } + }, + "indexes": { + "phone_idx": { + "name": "phone_idx", + "columns": [ + "phone" + ], + "isUnique": false + }, + "image_idx": { + "name": "image_idx", + "columns": [ + "image" + ], + "isUnique": false + } + }, + "foreignKeys": { + "users_group_id_groups_id_fk": { + "name": "users_group_id_groups_id_fk", + "tableFrom": "users", + "tableTo": "groups", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "users_zone_id_zones_id_fk": { + "name": "users_zone_id_zones_id_fk", + "tableFrom": "users", + "tableTo": "zones", + "columnsFrom": [ + "zone_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "user_opinions": { + "name": "user_opinions", + "columns": { + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "opinion_id": { + "name": "opinion_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "choice": { + "name": "choice", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'ignore'" + } + }, + "indexes": {}, + "foreignKeys": { + "user_opinions_user_id_users_id_fk": { + "name": "user_opinions_user_id_users_id_fk", + "tableFrom": "user_opinions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "user_opinions_opinion_id_opinions_id_fk": { + "name": "user_opinions_opinion_id_opinions_id_fk", + "tableFrom": "user_opinions", + "tableTo": "opinions", + "columnsFrom": [ + "opinion_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "user_opinions_user_id_opinion_id_pk": { + "columns": [ + "opinion_id", + "user_id" + ], + "name": "user_opinions_user_id_opinion_id_pk" + } + }, + "uniqueConstraints": {} + }, + "user_to_selection": { + "name": "user_to_selection", + "columns": { + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "target_id": { + "name": "target_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "user_to_selection_user_id_users_id_fk": { + "name": "user_to_selection_user_id_users_id_fk", + "tableFrom": "user_to_selection", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "user_to_selection_target_id_users_id_fk": { + "name": "user_to_selection_target_id_users_id_fk", + "tableFrom": "user_to_selection", + "tableTo": "users", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "zones": { + "name": "zones", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "province_id": { + "name": "province_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "total": { + "name": "total", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": { + "zones_name_province_id_unique": { + "name": "zones_name_province_id_unique", + "columns": [ + "name", + "province_id" + ], + "isUnique": true + } + }, + "foreignKeys": { + "zones_province_id_provinces_id_fk": { + "name": "zones_province_id_provinces_id_fk", + "tableFrom": "zones", + "tableTo": "provinces", + "columnsFrom": [ + "province_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + } + }, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/_journal.json b/drizzle/meta/_journal.json index 21899ce..e38d54b 100644 --- a/drizzle/meta/_journal.json +++ b/drizzle/meta/_journal.json @@ -8,6 +8,13 @@ "when": 1717814164478, "tag": "0000_tired_impossible_man", "breakpoints": true + }, + { + "idx": 1, + "version": "5", + "when": 1717817049392, + "tag": "0001_last_hiroim", + "breakpoints": true } ] } \ No newline at end of file diff --git a/src/userRoute.ts b/src/userRoute.ts index 8914ec2..5657694 100644 --- a/src/userRoute.ts +++ b/src/userRoute.ts @@ -81,7 +81,7 @@ export const userRoute = router({ .input( z.object({ offset: z.number().default(0), - limit: z.number().max(50).default(10), + limit: z.number().max(1000).default(1000), group: z.number().optional(), zone: z.number().optional(), opinionCount: z.number().default(3), @@ -189,6 +189,19 @@ async function getAllUser( }, limit: 3, orderBy: user.rank, + where: (user, { eq, and }) => { + const conditions: SQL[] = []; + if (group !== undefined) { + conditions.push(eq(user.group, group)); + } + if (zoneId !== undefined) { + conditions.push(eq(user.zone, zoneId)); + } + if (zoneIds.length > 0) { + conditions.push(inArray(user.zone, zoneIds)); + } + return and(...conditions); + }, }); let users = await db.query.user.findMany({ with: {