Commit graph

57 commits

Author SHA1 Message Date
kbkpbot
d4097212b3
breaking,orm: add table attrs; add table/field comment support for mysql and pg (#24744) 2025-06-18 10:20:09 +03:00
Louis Schmieder
73ebf42015
orm: add IN and NOT IN (#24634) 2025-06-02 03:49:10 +03:00
kbkpbot
5e69315fc2
orm: add function call based builder API for dynamic queries (fix #24178) (#24196) 2025-04-13 19:18:29 +03:00
André Luiz
6832df175d
orm: fix gen sql complex where (fix #24136) (#24138) 2025-04-05 15:52:59 +03:00
Alexander Mandrikov
e1a5acc1ef
orm: support plain @[serial] attribute for marking struct fields (#22814) 2024-11-09 17:26:22 +02:00
daniel-le97
5d76ee4603
orm: fix orm.Connection only allowing immutable Connections (#22684) 2024-10-28 22:29:47 +02:00
yuyi
da3112e545
all: replace fn name '@xxx' with 'xxx' (#22506) 2024-10-12 22:17:02 +03:00
yuyi
008aaad999
fmt: remove the prefixed module name of const names, that are in the same module (related #22183) (#22185) 2024-09-10 11:25:56 +03:00
yuyi
c51d30bf53
fmt: fix alignment of struct init fields (#22025) 2024-08-11 09:11:24 +03:00
yuyi
79ee4ae046
fmt: fix alignment of enumeration types (#21999) 2024-08-07 15:46:50 +03:00
yuyi
209063ffd0
fmt: implement wrapping function's super long arguments (fix #15545, fix #21643) (#21782) 2024-07-02 23:10:00 +03:00
Alexander Medvednikov
b5b57a2e07 orm: ilike for case insensitive text search 2024-06-10 11:54:25 +03:00
Felipe Pena
24af002249
v,breaking: add ability to read enum, fn, interface and sumtype attributes in compile-time, change builtin StructAttribute to VAttribute (#21149) 2024-03-31 09:14:33 +03:00
Turiiya
b98dca585c
checker, orm: add error for unchecked option multi return types, fix undefined behavior (#21106) 2024-03-28 07:31:32 +02:00
Elliot Chance
b3eae7831e
orm: fix the generated SQL for the "not equal" operator (#20321) 2024-01-01 13:11:23 +02:00
Alexander Medvednikov
f09826e928 all: unwrap const() blocks 2023-11-25 10:02:51 +03:00
Tim Marston
6974b113e4
orm: make is_null/is_not_null unary ops; don't bind null in where (#19635) 2023-10-24 12:40:03 +03:00
Tim Marston
756075380b
orm: add null handling and option fields (#19379)
* orm: added is none and !is none handling

* orm: added NullType, support option fields and deprecate [nonull]

Nullable DB fields are now determined by corresponding option struct field.  The
[nonull] attribute is deprecated and fields are all NOT NULL now, unless they
are option fields. New orm primitive, NullType, added to support passing none
values to db backends, which have been updated to support it.  Also, empty
string and 0 numberic values are no longer skipped during insert (since they may
be valid values).

* orm: fix [nonull] deprecation warning

* orm: add null handling to update and select

also, improved formatting for orm cgen, and removed optimised operand handling
of orm `is` and `!is` operators

* sqlite: read/report NULLs using new orm NullType

* postgres: returning data primitives now returns new orm.NullType

* orm: initialise NullType Primitives properly

* orm: do not smart cast operands inside sql

* orm: fix bad setting of option value

* orm: improve orm_null_test.v, adding/fixing selects

* orm: cleanup: rename NullType->Null, use serial const, cgen output

* orm: handle automatically generated fields more explicitly

During insert, fields which are
* [sql: serial]
* [default: whatever]
and where the data is a default value (e.g., 0, ""), those fields are not sent
to the db, so that the db can generate auto-increment or default values.  (This
was previously done only for [primary] fields, and not in all circumstances, but
that is not correct -- primary and serial/auto-increment fields are differnet.)

* orm: udpated README

* orm: select cgen fixes: read from uninit res; fail to init res

* orm: udpated tests

* orm: fix option sub-struct fields

* orm: fixed joins to option structs

Changed orm.write_orm_select() so that you pass to it the name of a resut
variable which it populates with the result (or not) and changed use of it in
sql_select_expr() and calls in write_orm_select() to populate substructs.

* orm: fix pg driver handling of NULL results

* orm: move runtime checks to comptime checker; cache checked tables

* orm: vfmt :(

* orm: markdown formatting

* orm: renamed orm.time_ and orm.enum_; updated db drivers

* checker: updated orm tests

* orm: fix issue setting up ast option values as orm primitives

* checker: ORM use of none/options and operations (added tests)

* orm: fixed tests

* db: clean code

* examples: remove orm nonull attributes

* orm: skip test memory santisation for orm_null_test.v

* orm: make the type-to-primitive converstion fns not public

* orm: mv object var c-code from checker->cgen; fix memory corruption

Code in checker/orm.v used the SqlStmtLine object field name to store c-specific
referenecs to option and array fields (for arrays of children).  I moved this
logic to cgen.  And fixed an issue introduced with option fields, where an array
of children was unpacked into a non-array result which could corrupt memory.

* orm: fixed vast error

* orm: skip 2 tests on ubuntu-musl which require sqlite3.h

* cgen: prevent casting a struct (string)

* v fmt orm_fkey_attribute.vv, orm_multidim_array.vv, orm_table_attributes.vv; run `VAUTOFIX=1 ./v vlib/v/compiler_errors_test.v`
2023-10-05 19:09:03 +03:00
asvln
6d56639cc1
orm: quote table and field name in [references] (#19387) 2023-09-20 08:56:58 +03:00
Casper Küthe
74d80a5120
orm: add support for V enum struct fields (#19374) 2023-09-18 16:06:26 +03:00
Casper Küthe
2002db703a
orm: support different foreign key types, not just an integer id (#19337) 2023-09-17 07:58:56 +03:00
asvln
2cce907dcb
orm: add references attribute to allow foreign key declarations on fields (#19349) 2023-09-16 12:04:32 +03:00
Turiiya
1e38cc0986
checker: disallow module name duplicates in local names (#18118) 2023-09-08 23:33:35 +03:00
Casper Küthe
6b3ffe8574
orm: add OR in where on update and delete (#19172) 2023-08-19 19:31:55 +03:00
Delyan Angelov
aa61fcb3dc
orm: fix inserting sequential values (id=0), in tables with an i64 primary field (#18791) 2023-07-05 23:25:22 +03:00
Mark aka walkingdevel
6ac09e605e
orm: allow structs without the id field, more flexible primary keys (#18140) 2023-05-09 00:21:42 +03:00
Alexander Medvednikov
9f118ba3f1 orm: skip via the "-" attribute 2023-05-02 17:00:54 +02:00
Mark aka walkingdevel
3fb32a866c
all: like operator/keyword for V ORM (#18020) 2023-04-23 03:40:54 +03:00
Delyan Angelov
db97630117
examples, orm: fix orm example; add -d trace_orm option to see all ORM generated queries (#17770)
* orm: add tracing of the generated queries by the orm module, when a program is compiled with `-d trace_orm`

* examples: fix examples/database/orm.v, add comments, and ensure that the example can be run several times with no errors

The example demonstrates connecting to all 3 DBs in the same program, and will be added to the CI very soon,
to serve both as a regression test, if it fails, and as an example to how to use the ORM in combination with
raw SQL queries to the DBs (which are driver/wrapper specific, unlike the ORM, but can be more convenient in some situations).
2023-03-25 21:46:17 +02:00
walking devel
580dbc3f0e
orm: allow inserting empty objects with db.sqlite (SQLite uses a slightly different SQL dialect) (#17334) 2023-02-16 11:34:16 +02:00
walking devel
4747e70d9d
orm: make last_id() return int, instead of orm.Primitive (fix #12110) (#17151) 2023-01-29 16:00:23 +02:00
Felipe Pena
1ba1f99b9c
orm: declare missing functions to handle literal types (#16627) 2022-12-09 20:34:34 +02:00
Delyan Angelov
458e68e196
orm,sqlite,mysql,pg: cleanup import v.ast, using typeof[Type]() 2022-12-07 13:40:46 +02:00
Swastik Baranwal
ada8643ac5
checker: disallow using builtin type names for const names (#16599) 2022-12-06 15:44:25 +02:00
yuyi
017ace6ea7
vfmt: change all '$expr' to '${expr}' (#16428) 2022-11-15 16:53:13 +03:00
yuyi
992b502198
db, json, time, term: change optional to result (#16201) 2022-10-26 11:26:28 +03:00
Louis Schmieder
f249feb9da
orm: support parenthesized expressions as in select from User where (name == 'Sam' && is_customer == true) || id == 1 (#15693) 2022-09-09 21:08:48 +03:00
Hitalo Souza
95a328be98
orm: improve the README and the tests. Add an error message for foreign key tags (#15670) 2022-09-06 13:12:37 +03:00
Hitalo de Jesus do Rosário Souza
e5e750d533
orm: default attribute (#15221) 2022-07-27 00:59:32 +03:00
Hitalo de Jesus do Rosário Souza
3f3742122f
orm: sql type in struct by attribute (#14919) 2022-07-13 18:03:30 +03:00
zakuro
a46bcf3571
all: v.ast.byte_type -> v.ast.u8_type (#14964) 2022-07-06 13:32:30 +03:00
Louis Schmieder
5df3d8ac75
orm: mysql fixes (#14772) 2022-06-16 20:19:49 +03:00
Louis Schmieder
a83ac948a0
orm: document & fix pg (#14533) 2022-05-26 22:53:09 +03:00
Daniel Däschle
d679146a80
fmt: remove space in front of ? and ! (#14366) 2022-05-13 06:56:21 +03:00
Alexander Medvednikov
af73e195da net: byte fixes 2022-04-15 15:55:39 +03:00
Alexander Medvednikov
36ec47cd20 all: replace "NB:" with "Note:" (docs/comments) 2022-03-06 20:01:22 +03:00
Delyan Angelov
fa2de89db9
orm: do not order by default, ordering is slow; also fix a bug for tables without defined primary keys 2021-12-23 16:43:22 +02:00
Yeuda By
8d5931c96c
orm: fix a typo (#12131) 2021-10-10 03:47:35 +03:00
Alexander Medvednikov
4a6d161c08 orm: postgres fixes 2021-09-30 20:00:27 +03:00
Enzo
c8471528ce
fmt: format long sum-types with a line for each type (#11461) 2021-09-10 20:56:55 +03:00