lighthouse
sqlc
lighthouse | sqlc | |
---|---|---|
15 | 170 | |
3,321 | 11,012 | |
0.5% | 3.9% | |
8.9 | 9.6 | |
3 days ago | 5 days ago | |
PHP | Go | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
lighthouse
-
Go with PHP
Sure.
1. SQLC is little more than a template generator for Prepared Statements wrapped in a class. [https://www.php.net/manual/en/mysqli.quickstart.prepared-sta...]. It's not exactly a mind bending or time saving tool.
2. There are multiple OpenAPI generators for PHP, in fact, they existed from nearly the start of the OpenAPI protocol (formerly Swagger) when Go was barely a year old. Here's a current popular one: https://openapi-generator.tech/docs/generators/php/]
3. PHP also, (unsurprisingly given the origination point of the spec) has many GraphQL implementations that support any database driver over ODBC, key-value stores, or even flat files. Here's one that plugs into Laravel [https://lighthouse-php.com/]
4. PHP has many mature, modern embedded KV store options... but it's also had one in the standard lib since years before Go even existed, or the concept of KV stores was even popular. [https://www.php.net/manual/en/class.splobjectstorage.php].
On your non-numbered points...
Go and PHP are fairly similar in raw processing speed since the JIT was added to PHP. However raw number crunching is rarely realistic when most applications are going to be using databases, stores, etc. So why not look at a benchmark of popular frameworks in both languages - which shows, again that the two are fairly similar in performance. [https://www.techempower.com/benchmarks/#section=data-r21&l=z...]
PHP has also had types for about 4 years now. It's not statically typed, but that's a preference, not a pro/con situation.
Built-in formatting is also a preference, not a pro/con situation. Many developers strongly dislike languages like Go and Python for this.
PHP has had one of the most powerful and useful package management ecosystems in the entire open source world since composer mostly replaced PEAR nearly a decade ago. It also has mature and well loved testing tooling. Neither of which are built in, because why would you need to build in tools that the community already creates and maintains for free?
I don't know what "bugs" you faced in the PHP stdlib, but I will concede that it is painful to use. Most of the stdlib is little more than a wrapper around C functions of the same name, and they inherit the frustration of using those C functions.
Laravel does allow you to write things by hand. You can also just define them ahead of time and have the Migrations, Models, Controllers, Views, Transformers and more generated for you automatically. [https://blueprint.laravelshift.com/]
There you go, there's your links. But frankly, you didn't need them. There's little you mentioned that's unique to Go at all, you just named a bunch of things that have become popular tools for most modern languages still being actively developed. I'm not sure why you think any of these things are Go-specific - some of them are maintained by the Go core team, like other newer languages have started doing, but that's it.
- how to display constantly changing data from a database in real time
-
Question: Laravel with Lighthouse graphql: Problems with resolvers
I am starting a new Laravel project with Lighthouse and have been problems with resolving non root fields. According to the documentation here for each of the fields that have complex types, there should be a model and a query provided for the field. So in this example I have a Version object which has two subfields: appVersion and apiVersion. Here is what I have in my schema.graphql file: ``` type Query { version: Version }
-
Give me your honest opinion - REST or GraphQL?
Those are the two main differences between GQL and REST. I can't tell you if it is suitable for your project, but now I hope you can make an informed decision. Also, for the idea that "GraphQL feels more aligned with creating a backend in Node," that's just BS. GraphQL is not aligned with any particular language, and the official project page lists various implementations. For Laravel specifically, you may want to look at the Lighthouse project.
-
Is having multiple different API resources for the same model, each doing things slightly different, a bad practice or an indication of bad design?
It may be beyond the scope of what you’re willing to do at this point, but I would consider switching to a GraphQL API. Gives your frontend a lot of flexibility in what data is requested with a lot less code dedicated to resources and controllers. Check out the lighthouse-php package if you’re feeling a bit adventurous.
-
Creating a GraphQL Server With PHP
Lighthouse is a good option too: https://lighthouse-php.com/
-
Looking for a personal stack
For multi-user apps Laravel Sanctum, Lighthouse for Laravel are options worth considering, haven't them tested yet.
-
Get Started with GraphQL and Laravel
The most popular GraphQL libraries for Laravel are Rebing & Lighthouse, in our tutorial we will be using Rebing which we can install by running:
-
Which programming language, besides JS, has the best support/ecosystem for graphql?
if you have no problem with php, take a look at Laravel with this package
-
Laravel-powered API: how to fetch a resource and its nested data?
A third way you could take is GraphQL, which is designed for querying and selecting things at arbitrary depths. Lighthouse looks to be a very nice graphql server for Laravel, from what I've used of it anyway. Pull up a graphql tutorial (the one on graphql.org is pretty good) and give Lighthouse a spin.
sqlc
-
Show HN: Riza – Safely run untrusted code from your app
Hi HN, I’m Kyle and together with Andrew (https://news.ycombinator.com/user?id=stanleydrew) we’ve been working on Riza (https://riza.io), a project to make WASM sandboxing more approachable. We’re excited to share a developer preview of our code interpreter API with HN.
There’s a bit of a backstory here. A few months ago, an old coworker reached out asking how to execute untrusted code generated by an LLM. Based on our experience building a plugin system for sqlc (https://sqlc.dev), we thought a sandboxed WASM runtime would be a good fit. A bit of hacking later, we got everything wired up to solve his issue. Now the API is ready for other developers to try out.
The Riza Code Interpreter API is an HTTP interface to various dynamic language interpreters, each running inside a WASM sandbox without access to the outside world (for now). We modeled the API to align with a POSIX shell-style interface.
We made a playground so you can try it out without signing up: https://riza.io
The API documentation lives here: https://docs.riza.io
There are many limitations at the moment, but we expect to rapidly expand capabilities so that programs can e.g. access the network and filesystem. Our roadmap has more details: https://docs.riza.io/reference/roadmap
If you need to execute LLM-generated code we’d love to have you try the API and let us know if you run into any issues. You can email us directly at [email protected].
-
Give Up Sooner
"Is there a way to get sqlc to use pointers for nullable columns instead of the sql.Null types?"
-
Show HN: Sqlbind a Python library to compose raw SQL
I came across this yesterday for golang: https://sqlc.dev which is somewhat like what you want, maybe.
Not sure it allows you to parameterize table names but the basic idea is codegen from sql queries so you are working with go code (autocompletion etc).
- API completa em Golang - Parte 7
-
ORMs are nice but they are the wrong abstraction
Agreed, but tools like https://sqlc.dev, which I mention in the article, are a good trade-off that allows you to have verified, testable, SQL in your code.
- API completa em Golang - Parte 6
-
Go ORMs Compared
sqlc is not strictly a conventional ORM. It offers a unique approach by generating Go code from SQL queries. This allows developers to write SQL, which sqlc then converts into type-safe Go code, reducing the boilerplate significantly. It ensures that your queries are syntactically correct and type-safe. sqlc is ideal for those who prefer writing SQL and are looking for an efficient way to integrate it into a Go application.
-
Type-safe Data Access in Go using Prisma and sqlc
I was browsing awesome-go for ideas on how to setup my data access layer when I stumbled on sqlc. It seemed like a great option. Code generation is a strategy often used in the Go ecosystem and making my queries safe at compile time was an idea I really liked. Knex was great, but it required of me that I test thoroughly my queries at runtime and that I sanitize my query results to ensure type safety within my application.
-
Level UP your RDBMS Productivity in GO
Now, we are going to generate the code. For this purpose, we are going to use sqlc.
-
What 3rd-party libraries do you use often/all the time?
https://github.com/sqlc-dev/sqlc — for use with //go:generate
What are some alternatives?
graphql-laravel - Laravel wrapper for Facebook's GraphQL
sqlx - general purpose extensions to golang's database/sql
graphqlite - Use PHP Attributes/Annotations to declare your GraphQL API
GORM - The fantastic ORM library for Golang, aims to be developer friendly
Pusher - Ruby library for Pusher Channels HTTP API
SQLBoiler - Generate a Go ORM tailored to your database schema.
ergodnc
ent - An entity framework for Go
Strapi - 🚀 Strapi is the leading open-source headless CMS. It’s 100% JavaScript/TypeScript, fully customizable and developer-first.
jet - Type safe SQL builder with code generation and automatic query result data mapping
Hot Chocolate - Welcome to the home of the Hot Chocolate GraphQL server for .NET, the Strawberry Shake GraphQL client for .NET and Banana Cake Pop the awesome Monaco based GraphQL IDE.
pgx - PostgreSQL driver and toolkit for Go