SoftStoneDevelop/Gedaq

Explicit cast parameters

SoftStoneDevelop opened this issue · 1 comments

It's mostly useful for enums. When in the code it is Enum and in the database it is short for example.

Now:

        [Query(@"
UPDATE public.table_with_enum
SET
    status = $1
WHERE
    id = $2
;
",
            "SetStatus",
            methodType: MethodType.Async,
            sourceType: Gedaq.Npgsql.Enums.SourceType.Connection,
            queryType: QueryType.NonQuery,
            accessModifier: AccessModifier.Public
            ),
            Parametr(typeof(short), position: 1, methodParametrName: "status"),
            Parametr(typeof(long), position: 2, methodParametrName: "id")
            ]
        private void ConfigSetStatus()
        {
        }

        public SomeMethod()
        {
            await SetStatus(connection: connection, status: (short)CurrentStatus.New, id: 1);
        }

Excpect:

        [Query(@"
UPDATE public.table_with_enum
SET
    status = $1
WHERE
    id = $2
;
",
            "SetStatus",
            methodType: MethodType.Async,
            sourceType: Gedaq.Npgsql.Enums.SourceType.Connection,
            queryType: QueryType.NonQuery,
            accessModifier: AccessModifier.Public
            ),
            Parametr(typeof(short), position: 1, methodParametrName: "status", methodParametrType: typeof(CurrentStatus)),
            Parametr(typeof(long), position: 2, methodParametrName: "id")
            ]
        private void ConfigSetStatus()
        {
        }

        public SomeMethod()
        {
            await SetStatus(connection: connection, status: CurrentStatus.New, id: 1);
        }

Add methodParameterType optional parameter.

Enumerations are quite common and writing a cast every time is quite tedious. It does not always make sense to add an implicit cast.