Commit Graph

374 Commits

Author SHA1 Message Date
Nathan.fooo d851b303bf
refactor: async send ws message in http request (#296)
* refactor: async send ws message in http request

* chore: update

* chore: update logs

* chore: update logs

* chore: clippy

* chore: add device id in header

* chore: fix test

* chore: fix device_id

* chore: fix client id

* chore: ratelimt for client

* chore: bump collab
2024-02-06 15:21:48 +08:00
Nathan.fooo d497f2ab62
fix: pg lock (#299)
* chore: fix pg lock

* chore: fix pg lock
2024-02-06 13:44:39 +08:00
Nathan.fooo 1cfb38d7a2
chore: fix pg lock (#298) 2024-02-06 08:57:10 +08:00
Nathan.fooo 1a7866e651
chore: use redis to cache collab data (#294)
* chore: use redis to cache collab data

* chore: create table

* chore: use cache

* chore: period check group status

* chore: remove trait

* chore: update logs

* chore: update logs

* chore: update logs

* chore: update logs
2024-02-05 09:54:16 +08:00
Nathan.fooo 4127f21792
chore: remove logs (#291)
* chore: remove logs

* chore: clippy
2024-02-03 14:50:32 +08:00
Nathan.fooo 9cd1f5ab0a
feat: cache uid (#290)
* feat: cache uid

* chore: remove select uid call

* chore: break loop if mailbox close
2024-02-03 13:08:49 +08:00
Nathan.fooo 14a146d65f
chore: add logs (#286)
* chore: add logs

* chore: add logs

* chore: add logs
2024-02-03 07:40:18 +08:00
Fu Zi Xiang 0f4fe7bd7b
chore: merge with main 2024-01-24 12:17:50 +08:00
nathan bb1029077c refactor: template 2024-01-24 11:46:23 +08:00
Fu Zi Xiang 353065dfbf
feat: add optional name param for workspace creation 2024-01-24 11:35:44 +08:00
nathan bb103531e2 refactor: template 2024-01-24 11:31:53 +08:00
Fu Zi Xiang 7c95f6556a
feat: added test case and use triggers 2024-01-23 14:48:25 +08:00
Fu Zi Xiang 27b7b8b5b8
feat: add workspace and delete workspace 2024-01-23 12:10:55 +08:00
Nathan.fooo 284e2bf638
chore: compress collab data (#249)
* chore: compress collab data

* chore: custom buffer size

* chore: compression ws message

* chore: update log

* chore: update log

* chore: update client max body size

* chore: update client api

* docs: update docs

* chore: retry transaction

* chore: update timeout

* chore: stop previous loop

* chore: log ping error

* chore: log send error

* chore: log error

* chore: update log

* chore: async compress

* feat: stream payload

* chore: update load

* chore: update

* chore: update log

* chore: fix cmt

* fix: client message from http

* chore: bump collab
2024-01-10 08:05:57 +08:00
Nathan.fooo 4886d3d474
chore: rename error message (#247) 2024-01-05 07:29:06 +08:00
Nathan.fooo 8e38ae7b69
refactor: remove rust-s3, sqlx from client-api (#245)
* refactor: remove rust-s3, sqlx from client-api

* chore: fmt

* chore: add ci check

* chore: add ci check

* chore: add ci check
2024-01-05 06:12:01 +08:00
Nathan.fooo c5fe447250
feat: bump collab (#243)
* chore: bump collab

* chore: bump collab

* chore: bump collab
2024-01-03 08:40:26 +08:00
Nathan.fooo a455c9de8e
chore: refactor logs (#236)
* chore: add logs

* chore: return ws state

* fix: init the collab from disk
2023-12-27 05:20:40 +08:00
Nathan.fooo 4d113425fe
feat: override collab when create (#234)
* feat: override collab when create

* chore: clippy

* chore: fmt
2023-12-25 09:40:32 +08:00
Nathan.fooo a07cc0b903
feat: Insert multiple collab (#233)
* chore: remove panic hook

* chore: support insert multiple collabs
2023-12-25 02:03:41 +08:00
Nathan.fooo 453329dc0c
feat: try to resotre from snapshot when fail to initialize the collab in CollabStoragePlugin (#222) 2023-12-18 02:27:49 +08:00
Nathan.fooo 69ed6ff4e8
feat: create snapshot for collab (#221) 2023-12-17 13:38:55 +08:00
Zack 24ab19f2a5
feat: use sqlx row stream to load collab policy (#217)
* feat: use sqlx row stream to load collab policy

* fix: access control object type
2023-12-17 11:24:51 +08:00
Nathan.fooo b39621e389
refactor: reduce select all workspace memebers call (#216)
* refactor: reduce select all workspace memebers call

* chore: docker build

* refactor: move tests

* chore: expose enforcer on tests

* refactor: update workspace member when recv pg notification

* chore: update test

* chore: commit sqlx file
2023-12-17 02:46:05 +08:00
Zack 377d7ad8f7
opti: Select all collab members (#215)
* feat: use af member stream for populating policies

* fix: add missing sqlx files

* chore: removed unused function
2023-12-16 13:02:37 +08:00
Nathan.fooo cd2c0a3114
fix: casbin access control (#214)
* chore: fix access control

* fix: create user update collab permissions

* chore: select workspace role it's not found in cache

* fix: encode buffer error

---------

Co-authored-by: Jiraffe7 <twajxjiraffe@gmail.com>
2023-12-16 08:27:57 +08:00
Jiraffe7 36ef0f13b0
feat: casbin access control (#178)
* feat: casbin for access control

* fix: method to generate database url instead of ToString

* fix: hold write lock when modifying policies

* chore: fix compile

* fix: remove db constraint for lib integration tests

---------

Co-authored-by: nathan <nathan@appflowy.io>
2023-12-11 11:08:15 +08:00
Nathan.fooo c0f5c2ce7e
feat: fix flaky test (#202)
* test: fix

* fix: flaky test
2023-12-09 12:48:46 +08:00
Nathan.fooo 208a353fef
fix: client api - channel management (#191)
* chore: add logs

* chore: remove dropped channels
2023-12-01 10:52:54 +08:00
Nathan.fooo 62abd8abbf
feat: return request id to client api (#186)
* docs: update

* chore: add logs

* chore: test

* feat: return request id to the client

* feat: print request id in client api

* fix: lock table when creating new user
2023-11-30 07:40:52 +08:00
Nathan.fooo 58ffae16b1
feat: enable create default documents for user when sign up (#184)
* chore: send collab with interval

* feat: create workspace template
2023-11-29 06:11:20 +08:00
Nathan.fooo 79a02edd00
feat: notify user via websocket after profile changed (#164)
* feat: notify user via websocket after profile changed

* chore: update

* chore: update
2023-11-14 12:47:10 +08:00
Nathan.fooo 54ef875f5f
feat: notify user profile change (#163)
* feat: send user profile changes via ws

* test: add tests
2023-11-13 22:58:18 +08:00
Nathan.fooo 29b39f9ba3
feat: Client api url (#162)
* chore: expose client base url
2023-11-13 20:43:04 +08:00
Nathan.fooo f1dad07caa
feat: http init sync (#151)
* fix: bugs

* chore: support message type

* refactor: ws message

* feat: post realtime message

* feat: use proto to reduce message size

* ci: update

* ci: install protoc

* ci: update docker

* chore: update ci

* ci: update docker

* ci: fix

* ci: fix

* ci: fix
2023-11-08 15:41:39 +08:00
Nathan.fooo 41e01b91fc
feat: update collab rev and fix some bugs (#148)
* chore: remove todo

* chore: update collab rev

* chore: fmt

* chore: fmt

* chore: cache collab user

* fix: internal error

* ci: fix test

* chore: update collab rev

* ci: fix
2023-11-05 22:43:20 +08:00
Nathan.fooo d088fd2ec8
feat: ws frame size (#146)
* chore: update ws frame size

* chore: update

* chore: update frame size to 64 kb

* chore: fix merge

* chore: update

* chore: update collab rev

* chore: update

* chore: update

* chore: update

* chore: update

* chore: update

* chore: update ws state

* chore: update pg max connect

* chore: fix crash
2023-11-04 21:42:06 +08:00
Nathan.fooo 937e3bd9b2
fix: fix some bugs (#145)
* chore: update

* chore: pub error code

* chore: update

* chore: update

* chore: update

* chore: update

* chore: update

* chore: update max frame size

* chore: update max frame size

* chore: ws buffer size

* chore: update
2023-11-03 14:15:08 +08:00
Nathan.fooo 9c911a3a94
refactor: Error (#143)
* chore: remove api

* chore: update log

* refactor: error

* chore: fmt

* ci: fix test

* ci: fix

* chore: remove unstable
2023-11-02 17:17:34 +08:00
Nathan.fooo 5020d4738a
feat: Integrate workspace member (#140)
* chore: update client api

* chore: return user name in the workspace memeber

* chore: optimize logs
2023-10-25 20:44:30 +08:00
Nathan.fooo 8c1c5d0cd9
feat: insert uid instead of gen it from db (#139) 2023-10-25 12:18:33 +08:00
Nathan.fooo 7c503372e0
feat: client-api integration: save user meta data (#133)
* chore: update

* feat: get user workspace info

* feat: return list of workspace

* feat: return latest workspace id

* feat: latest workspace id

* test: add tests
2023-10-23 15:03:31 +08:00
Nathan.fooo d0d2e916a7
refactor: hiding sqlx row entitis from client api (#132) 2023-10-22 22:10:03 +08:00
nathan ec13239bdd chore: update dto 2023-10-22 21:10:30 +08:00
Nathan.fooo 7a309c6f69
feat: insert user metadata (#131) 2023-10-22 19:21:23 +08:00
Nathan.fooo fe5ef43333
refactor: workspace member crud (#128)
* refactor: workspace member crud

* refactor: update user api

* test: fix test
2023-10-21 20:50:32 +08:00
Nathan.fooo 417d9f1d41
feat: cache workspace member & fix some bugs (#127)
* chore: insert collab member when inserting workspace member

* refactor: test directory

* chore: remove triggers

* test: add more test

* chore: cache workspace memeber role

* chore: update test
2023-10-20 19:43:36 +08:00
Nathan.fooo cb9cdb9280
feat: collab permission test (#126)
* chore: check permission for collab storage proxy

* feat: add permission tests

* chore: skip log
2023-10-19 17:12:21 +08:00
Nathan.fooo 9dc7bbeee0
feat: Collab access control (#120)
* chore: check collab message with access permission

* chore: imple collab permission service

* refactor: migrations

* chore: collab member ops

* chore: collab permission

* chore: update can edit workspace collab

* chore: fix test

* feat: fetch collab members

* chore: fix test

* chore: fix client api

* chore: check permission for collab storage proxy
2023-10-17 14:00:04 +08:00
Nathan.fooo 88be0c2433
refactor: access control (#118)
* refactor: access control

* chore: fix test
2023-10-15 10:56:56 +08:00
Nathan.fooo 3e73adc82d
feat: workspace manager & test (#117)
* chore: add workspace tests

* chore: add slqx files

* feat: update workspace member role

* chore: update
2023-10-14 12:23:23 +08:00
Nathan.fooo 5c58f95f9f
feat: workspace access control (#115)
* feat: workspace access control

* feat: extact workspace id from path

* feat: create member with permission set

* chore: update sqlx files

* chore: fix cargo toml warn

* chore: clippy
2023-10-13 20:02:29 +08:00
Nathan.fooo ef726092be
refactor: file storage (#110)
* refactor: return file id after save to disk

* test: add tests

* chore: mine type

* test: disbale two client sync test

* chore: get file with url

* refactor: client api
2023-10-11 21:36:57 +08:00
Nathan.fooo 128590652e
refactor: collab storage dir (#108) 2023-10-10 08:45:29 +08:00
Nathan.fooo 17093de469
chore: opti log (#103)
* chore: opti log

* chore: clippy
2023-10-06 21:04:16 +08:00
Nathan.fooo d3186cc07a
feat: websocket config (#99)
* chore: enable tls feature

* chore: update ws client

* chore: update ws client

* chore: expost database entities

* chore: update ws nginx config

* chore: rename error file

* chore: fix clippy
2023-10-05 17:43:50 +08:00
Zack 583f82b7fb
refactor: collab http (#89)
* refactor: collab http

* fix: sqlx uuid in types client_api
2023-10-04 16:59:03 +08:00
Nathan.fooo 19ee96db4a
chore: rename crate (#82) 2023-09-28 22:20:48 +08:00
Zack a6eb8607c9
feat: async read for file upload (#80)
* feat: async read for file upload

* feat: async read for file download

---------

Co-authored-by: nathan <nathan@appflowy.io>
2023-09-28 14:53:41 +08:00
Zack ff6a8e1eaf
feat: File api (#70)
* feat: s3 minio wip

* feat: s3 minio bucket create idempotent

* feat: put storage setting into configurations

* chore: clippy lint

* feat: add setting to base config

* feat: add configuration for prod

* fix: allow use different minio host

* feat: add server file storage

* fix: add missing file

* feat: add code template

* feat: add http api

* feat: added file upload to client api

* feat: database metadata impl

* fix: added missing files

* feat: added test cases and improve impl

---------

Co-authored-by: nathan <nathan@appflowy.io>
2023-09-27 10:21:37 +08:00
Zack f1a16058ce
feat: Gotrue admin api (#73)
* feat: set up admin account and auto confirm during appflowy start

* feat: client auth against gotrue whenever possible

* feat: admin add user

* feat: implement admin add user

* feat: generate registered user

* fix: enable cloud feature for client_api

* fix: test same user fix
2023-09-23 17:07:02 +08:00
Nathan.fooo b0622efe08
Feat update user (#69)
* chore: update user

* refactor: token

* chore: update
2023-09-22 20:28:39 +08:00
Zack df9c71edb2
feat: returns if user is new for both oauth and password login (#67)
* feat: returns if user is new for both oauth and password login

* test: add test for firt time sign_in and subsequent

* chore: remove uneeded use

* fix: compile

---------

Co-authored-by: nathan <nathan@appflowy.io>
2023-09-21 14:05:25 +08:00
Zack bbc913e45f
feat: support name for oauth sign in (#65)
* feat: support name for oauth sign in

* fix: add sqlx metadata

* feat: improve api, add name modifications

* fix: add sqlx query metadata
2023-09-21 09:28:07 +08:00
Zack 0676db7ed6
feat: Workspace members (#63)
* fix: create user if they sign up with oauth

* feat: add workspaces_members add and remove operations

* feat: add insert workspace members

* feat: attach db ops to api ops

* refactor: separate user and workspace scope

* chore: add sqx query metadata

* chore: add 2nd registered user for testing

* ci: use valid email

* ci: fix registered password invalid

* fix: use email instead of uid

* fix: use email instead of uid sqlx query metadata

* feat: add test for workspace member

* test: added workspace add and delete with checking

* ci: fix email
2023-09-19 20:59:16 +08:00
Zack 3c598f178e
ci: test env docker-compose deployment (#48)
* ci: test env docker-compose deployment

* ci: test deployment

* fix: replace delimiter with pipe to avoid conflict

* fix: API_EXTERNAL_URL_TEST from secrets

* chore: remove unneeded deploy when pull request

* fix: cloud public host name/address

* chore: trigger: change to push

* chore: add ext_url for exposed gotrue auth server
2023-09-15 21:13:43 +08:00
Zack b3be09e264
feat: added refresh ability on server and client (#41)
* feat: added refresh ability on server and client

* fix: use refresh token for refresh and add test case

* chore: cargo fmt --all

* chore: cargo clippy

* fix: cargo clippy

* test: added async mutex for registered user for consistency

* fix: remove unneeded files

---------

Co-authored-by: nathan <nathan@appflowy.io>
2023-09-14 15:58:18 +08:00
Zack 8d11d7b6cf
feat: support external oauth (#35)
* feat: support external oauth

* chore: cargo fmt

* doc: add docs for google oauth2

* fix: use btree map and get for oauth

* feat: client to open url for oauth login

* feat: add test case for oauth not available

* feat: add placeholder for sign_in_url

* fix: use

* feat: client sign up with url

* feat: add sign_in_with_url simple test

* fix: use url fragments and string split

* fix: test case and gotrue error handling

* fix: return error and remove unwrap

* chore: remove unused file not in module tree

* fix: test cases

* chore: add cfg feature cloud to isolate dependencies
2023-09-13 21:08:13 +08:00
Nathan.fooo 3aa4d20ad3
chore: reduce deps of client_api crate (#37) 2023-09-13 13:12:07 +08:00
Nathan.fooo f0f58f98f3
feat: create collab handlers (#34)
* feat: logged user after sign up/sign in

* test: fix test

* chore: update sqlx files

* chore: add router

* chore: parser user uuid from token
2023-09-12 21:52:25 +08:00
Zack 0d59211e55
feat: expose workspace and profile api (#32)
* feat: expose workspace and profile api

* feat: add impl for client_api

* feat: add test case for workspace and profile
2023-09-12 16:14:14 +08:00
Zack 853f089ca0
feat: test gotrue when app start, use state for gotrue client, use go… (#24)
* feat: test gotrue when app start, use state for gotrue client, use gotrue UUID instead of BIGINT for user uid

* feat: backward compatibility with native authetication

* fix: native auth use uuid instead

* fix: sqlx preparation

* fix: sqlx metadata and unused variable

* fix: clippy

* fix: create workspace if not exist after sign in

* chore: update .sqlx with new query

* feat: query workspace

* revert: revert using i64 for user id

* fix: update sqlx queries

* fix: update .sqlx metadata

* feat: only use uuid from sqlx types, select user_profile view

* ci: add version check

* ci: add missing sqlx files

* chore: cargo fmt
2023-09-11 17:16:41 +08:00
Nathan.fooo 4a56cbb91f
refactor: refactor app data struct (#23)
* refactor: refactor app data struct to reduce memory cost

* refactor: rename AppData to AppResponse

* chore: implement traits

* chore: remove default features of actix-web
2023-09-10 11:56:22 +08:00
Zack d4577f5e61
Feat: enrich http dto (#20)
* feat: add scripts for easier dev

* feat: add Json<T> as resp type for http server

* feat: restructure server and client shared entity

* feat: restructure server and client shared entity

* feat: use serde_repr to deserialize enum into json number

* feat: minor adjustment to results and server error

* feat: test: fix unconfirmed email message

* feat: test: add test case for existing user

* feat: test: modified api for sign_out

* feat: test: add test case pass
2023-09-08 20:01:28 +08:00