Commit Graph

19 Commits

Author SHA1 Message Date
bndw
55f0f5a225 feat(postgres): configurable limits
Makes all hardcoded limits configurable for `type PostgresBackend` and retains the
current default values.

Related to #60
2023-06-05 11:49:23 -03:00
bndw
03ecbb9e6c feat(postgres): configurable query limit
Adds a QueryLimit to `type PostgresBackend` and retains the
current default value of 100.

Closes #60
2023-05-24 13:13:42 -03:00
bndw
a7dbf7c491 refactor(postgres): Unit test SaveEvent
Refactors SaveEvent so it's unit testable and adds tests to
assert the current behavior.
2023-05-18 09:40:45 -03:00
mattn
639c210661 support NIP-45 (#58) 2023-05-17 07:54:56 -03:00
bndw
ae641fd24d refactor(postgres): make SQL generation testable
Decouples the postgresql sql generation from the query execution.
This allows the logic for building sql to be unit tested without
access to a database.

This work was motivated when a client was not receiving events as
expected. In debugging I found that if a tag's value was an empty array,
then no query would be executed - and to my surprised no error is
raised either. I wanted to get a better sense of the current constraints on
when queries are and are not executed, but I had a hard time keeping the
code in my head. This led me to extracting the sql generation into its
own function and writing the unit tests that document its current
behavior. This refactor makes no changes to the current logic. I have added
some REVIEW comments in the test cases where I thought some error handling
could be introduced but I wanted to first see if you were receptive to this
refactor before proposing any functional changes.
2023-05-02 12:41:51 -03:00
fiatjaf
4e15120111 migrate all built-in storage backends. 2023-05-01 19:41:17 -03:00
Steve Perkins
a82e5edb0d Adds NIP-33 support for replaceable events. 2023-03-31 11:36:54 -03:00
Gustavo Chain
304831f749 move AfterSave method from relay to storage 2023-02-10 10:37:46 -03:00
Dylan Cant
82e4174073 added filter handling to query.go and sort "created_by" descending 2023-01-19 17:56:28 -03:00
Liran Cohen
0442b02394 fix postgres delete event query 2023-01-18 18:33:06 -03:00
0x0ff
9ba958e9a0 set SetMaxOpenConns, close rows when QueryEvents finishes 2022-12-30 15:28:43 -03:00
0x0ff
af890590f3 fix: QueryEvents should skip ids that are not a valid 32 byte hex 2022-12-28 09:17:33 -03:00
0x0ff
f2ab8020a8 handle event responses as per NIP-20 2022-12-27 16:44:57 -03:00
alex
627724f702 start: introduce Server type and Shutdown (breaking change)
the main motivation for this change is to be able to run tests.
before this commit, Start, Router and Log operated on global variables,
making automated testing unreasonably hard.

this commit puts all that a server needs in a new Server type,
which also made it possible for a Server.Shutdown - see ShutdownAware
doc comments.

BREAKING CHANGES:
- Relay.OnInitialized takes one argument now, *relayer.Server.
- relayer.Router is now replaced by relayer.Server.Router().
  package users can still hook into the router from OnInitialized
  for custom HTTP routing.
- relayer.Log is gone. apart from another global var, imho this was
  a too opinionated choice for a framework to build a custom relay upon.
  this commit introduces a Logger interface which package users can implement
  for zerolog to make it log like before. see Server.Log for details.

other notable changes: finally added a couple basic tests, for start up
and shutdown. doc comments now explain most of the essentials,
hopefully making it more approachable for newcomers and easier to understand
the relayer package.

the changes in handlers.go are minimal, although git diff goes crazy.
this is because most of the lines are simply shifted indentation back by one
due to go fmt.

before this commit:

    func handleWebsocket(relay Relay) func(http.ResponseWriter, *http.Request)
    func handleNIP11(relay Relay) func(http.ResponseWriter, *http.Request)

after:

    func (s *Server) handleWebsocket(w http.ResponseWriter, r *http.Request)
    func (s *Server) handleNIP11(w http.ResponseWriter, r *http.Request)
2022-12-24 20:41:02 -03:00
fiatjaf
d7aba0b21f fix some dependencies and storage instantiation on example relays. 2022-11-11 09:46:18 -03:00
fiatjaf
b903f72945 never store ephemeral events. 2022-11-03 14:33:18 -03:00
0x0ff
13a0c45fff fix: postgresql tags_to_tagvalues func definition 2022-10-15 17:54:55 -03:00
0x0ff
ec4cd51ebd fix: build failing 2022-10-09 11:43:07 -03:00
fiatjaf
aa96fa0a21 refactor framework interface, simplify basic and whitelisted, bring expensive on and rewrite it. 2022-07-24 17:41:00 -03:00