Commit graph

117 commits

Author SHA1 Message Date
Turiiya
3e50ba0856
ci: update and cleanup the ci related code (#19541) 2023-10-10 21:39:00 +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
yuyi
74997fd824
ast, cgen: fix as cast with call expr (fix #19453) (#19462) 2023-09-29 11:59:14 +03:00
Casper Küthe
74d80a5120
orm: add support for V enum struct fields (#19374) 2023-09-18 16:06:26 +03:00
asvln
2cce907dcb
orm: add references attribute to allow foreign key declarations on fields (#19349) 2023-09-16 12:04:32 +03:00
Casper Küthe
e8d133d548
orm: fix cgen inserting wrong array index (#19324) 2023-09-12 14:50:13 +03:00
yuyi
18e60e77de
fmt: remove inline comments (#19263) 2023-09-03 23:51:56 +03:00
Delyan Angelov
58b6ba81d1
builtin: implement array.sorted() and array.sorted_with_compare() methods, that do not modify their receivers (#19251) 2023-09-01 09:12:00 +03:00
jacksonmowry
d285ff08f0
db.mysql: add the exec family of methods (#19132) 2023-08-14 16:18:01 +03:00
Etienne Girondel
492e918fdb
builder,pref: allow thirdparty objects compilation with CPP compiler (#19124) 2023-08-13 20:30:28 +03:00
Delyan Angelov
e3ade704cb
tools: remove remaining references to vlib/sqlite, vlib/mysql, vlib/pg (and make v test-cleancode fail *loudly*, when a folder is missing, regression after a421e485f). 2023-08-03 23:10:02 +03:00
Ulises Jeremias Cornejo Fandos
02ea6028af
vlib: improvements to the context module (#18318) 2023-06-04 18:12:52 +02:00
Mark aka walkingdevel
3fb32a866c
all: like operator/keyword for V ORM (#18020) 2023-04-23 03:40:54 +03:00
yuyi
95d1beb008
cgen: fix c struct with reserved field name (fix #17993) (#17996) 2023-04-21 19:41:13 +03:00
walking devel
8452644ec3
orm: enforce that queries always return a Result, a query-resulting array can be used as a V array in place. (#17871) 2023-04-04 08:23:06 +03:00
Felipe Pena
9e7aeec215
sql: fix wrong field name on generated code (#17684) 2023-03-17 21:45:52 +01:00
walking devel
3682a9cf88
orm: allow use of mut db orm.Connection (#17439) 2023-03-01 00:49:30 +02:00
l-m
0625caad56
wasm: add a webassembly compiler backend, based on using binaryen (#17368) 2023-02-28 23:58:53 +02:00
walking devel
b7b6c2368e
orm: allow using connections, that were explicitly casted to orm.Connection too (#17427) 2023-02-27 23:54:03 +02:00
Delyan Angelov
9c511e03f6
tools: remove import v.pref, just for pref.vexe_path(), to compile tools faster (#17411) 2023-02-26 07:56:14 +02:00
yuyi
b5b1efbb7b
cgen: fix sumtype as cast with calling twice (#17196) 2023-02-02 13:57:37 +02:00
Delyan Angelov
6572d597f9
Revert "cgen: fix sumtype as cast with calling twice (fix #17156) (#17183)"
This reverts commit 90ae3c82c9.
2023-02-02 10:49:15 +02:00
yuyi
90ae3c82c9
cgen: fix sumtype as cast with calling twice (fix #17156) (#17183) 2023-02-02 09:31:11 +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
walking devel
9a86456365
cgen: support string interpolation in ORM queries (#17141) 2023-01-29 01:27:34 +02:00
walking devel
a9a04bba55
orm: support fn calls in where (#17127) 2023-01-26 22:36:30 +02:00
walking devel
2fb9bdce9a
cgen, checker: add panic in ORM for invalid queries, when there are no or {} blocks, add type checking for the fkey attribute, add tests (#16977) 2023-01-17 20:21:10 +02:00
yuyi
64558df764
vlib: move the mysql/sqlite/pg/mssql modules under vlib/db (#16820) 2023-01-13 17:02:32 +02:00
Felipe Pena
ba091a36dd
checker: fix unreachable code checking for sql ORM blocks (#16948) 2023-01-12 15:36:44 +02:00
Delyan Angelov
6a32c81070
tests: extract slow tests (prod, valgrind, inout, repl etc), from vlib/v/tests/ to vlib/v/slow_tests/ (#16892) 2023-01-09 23:47:03 +02:00
Delyan Angelov
c1a9f42b05
ci: add vlib/v/tests/orm_sub_array_struct_test.v to the skip list for the tests-sanitize-undefined-gcc job 2023-01-05 19:51:44 +02:00
Hitalo Souza
3598e7d08e
orm: add tests for fkey: relationship attribute and retrival of joined rows (#16877) 2023-01-05 15:20:15 +02:00
Felipe Pena
1ba1f99b9c
orm: declare missing functions to handle literal types (#16627) 2022-12-09 20:34:34 +02:00
Delyan Angelov
a987f84b15
ci: skip the very slow running tests in v test-self, when -asan-compiler or -msan-compiler is passed as well. 2022-11-22 19:52:43 +02:00
yuyi
017ace6ea7
vfmt: change all '$expr' to '${expr}' (#16428) 2022-11-15 16:53:13 +03:00
Dominik Pytlewski
2634b99769
sqlite: expose SQLite's VFS layer (#16359) 2022-11-09 19:57:06 +02:00
yuyi
117c829a97
vtest-self: add skipping ssl tests on windows (#16107) 2022-10-19 11:03:29 +03:00
Delyan Angelov
7fb2718609
ci: only run openssl_compiles_test.v on !windows 2022-10-16 23:15:00 +03:00
Delyan Angelov
14923123ad
ci: skip const_fixed_array_containing_references_to_itself_test.v on windows-msvc 2022-10-10 13:30:35 +03:00
Alfie Ranstead
27305d1a5f
net.websocket: swap unsafe use of nil for a safe default value (#15836) 2022-09-22 08:00:03 +03:00
Delyan Angelov
993802f6a6
markused: fix compilation of gg programs with -skip-unused, add test to prevent regressions (#15821) 2022-09-20 08:03:03 +03:00
flopetautschnig
1c63ce479c
vweb: adding a vweb.csrf protection module (#15586) 2022-09-06 13:18:39 +03:00
Louis Schmieder
6110373519
orm: init or implementation (#14989) 2022-08-31 14:43:20 +03:00
Joe Conigliaro
c3866bb7b1
gen.golang: skip tests only on ubuntu-docker-musl 2022-06-29 21:11:28 +10:00
Joe Conigliaro
86549feafa
gen.golang: globally skip go backend tests & run only on ubuntu-tcc 2022-06-29 20:55:43 +10:00
Delyan Angelov
e1360ccf8c
ci: add VTEST_JUST_ESSENTIAL=1 ./v test-self mode. Use it for alpine-docker-musl-gcc . 2022-06-09 15:26:52 +03:00
Delyan Angelov
82eb495617 ci: on windows-msvc, skip const_fixed_array_containing_references_to_itself_test.v 2022-06-04 13:05:27 +03:00
Delyan Angelov
2fa64f1471
ci: skip embed_file_test.v for now 2022-06-01 12:06:02 +03:00
Delyan Angelov
3fc4459485
ci: ignore orm_joined_tables_select_test.v on tasks, that do not have sqlite installed 2022-05-17 12:53:07 +03:00
Larpon
ef6225c542
vvet: fix false positive, add test (#14403) 2022-05-16 12:24:21 +03:00